{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import time\n",
    "from PIL import Image\n",
    "from PIL import ImageDraw\n",
    "plt.style.use({'figure.figsize':(10, 10)})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Q-Table One"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Q-table One is used to void the obstacles automatically.\n",
    "### Columns:Nearest|Near|Medium|Far\n",
    "##### Columns register the states\n",
    "### Rows:Up|Down|Turn_left_45 degree|Turn_right_45_degree\n",
    "##### Rows register the actions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#constant\n",
    "Epsilon_start=1\n",
    "Epsilon_final=0.01\n",
    "Decay_Rate=0.000001#he dacaying rate of the Epsilon, the range of the epsilon is 0.01-1, initially it is 1.\n",
    "Action_times=0 #Rigister the totality of the times of selecting actions, including the random selections and selection based on Q_Table\n",
    "Velocity_tripod=0.289*40\n",
    "Up_D=np.array([-40,-20,0,20,40])\n",
    "Left_D=np.array([-60,-80,-100,-120])\n",
    "Right_D=np.array([60,80,100,120])\n",
    "Robot_R=40\n",
    "Beta=0.9\n",
    "Alpha=0.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Nearest(<50cm)||Near(50cm-130cm)||Medium(130cm-210cm)|Far(>210cm)\n",
    "#Safe distance=1cm\n",
    "States=np.array(['L0R0U0','L0R0U1','L0R0U2','L0R0U3',\n",
    "                'L0R1U0','L0R1U1','L0R1U2','L0R1U3',\n",
    "                'L0R2U0','L0R2U1','L0R2U2','L0R2U3',\n",
    "                'L0R3U0','L0R3U1','L0R3U2','L0R3U3',\n",
    "                'L1R0U0','L1R0U1','L1R0U2','L1R0U3',\n",
    "                'L1R1U0','L1R1U1','L1R1U2','L1R1U3',\n",
    "                'L1R2U0','L1R2U1','L1R2U2','L1R2U3',\n",
    "                'L1R3U0','L1R3U1','L1R3U2','L1R3U3',\n",
    "                'L2R0U0','L2R0U1','L2R0U2','L2R0U3',\n",
    "                'L2R1U0','L2R1U1','L2R1U2','L2R1U3',\n",
    "                'L2R2U0','L2R2U1','L2R2U2','L2R2U3',\n",
    "                'L2R3U0','L2R3U1','L2R3U2','L2R3U3',\n",
    "                'L3R0U0','L3R0U1','L3R0U2','L3R0U3',\n",
    "                'L3R1U0','L3R1U1','L3R1U2','L3R1U3',\n",
    "                'L3R2U0','L3R2U1','L3R2U2','L3R2U3',\n",
    "                'L3R3U0','L3R3U1','L3R3U2','L3R3U3'])\n",
    "Actions=np.array(['Up','Down','Left_45D','Right_45D'])\n",
    "Actions_len=len(Actions)\n",
    "States_len=len(States)\n",
    "# print(Actions_len)\n",
    "# print(States_len)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Up</th>\n",
       "      <th>Down</th>\n",
       "      <th>Left_45D</th>\n",
       "      <th>Right_45D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>L0R0U0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L0R0U1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L0R0U2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L0R0U3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L0R1U0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Up  Down  Left_45D  Right_45D\n",
       "L0R0U0  0.0   0.0       0.0        0.0\n",
       "L0R0U1  0.0   0.0       0.0        0.0\n",
       "L0R0U2  0.0   0.0       0.0        0.0\n",
       "L0R0U3  0.0   0.0       0.0        0.0\n",
       "L0R1U0  0.0   0.0       0.0        0.0"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Q_Table_Real=np.zeros((States_len,Actions_len))\n",
    "Q_Table_Real=pd.DataFrame(Q_Table_Real,columns=Actions,index=States)\n",
    "Q_Table_Real.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***********************************************************\n",
      "Succeed to initialize Q-Table!\n",
      "***********************************************************\n",
      "(64, 4)\n",
      "[[ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]\n",
      " [ 0.  0.  0.  0.]]\n"
     ]
    }
   ],
   "source": [
    "def Initial_Q_Table(Actions_len_,States_len_):\n",
    "    Q_Table_=np.zeros((States_len_,Actions_len_))\n",
    "    print('***********************************************************')\n",
    "    print(\"Succeed to initialize Q-Table!\")\n",
    "    print('***********************************************************')\n",
    "    return Q_Table_\n",
    "Q_Table=Initial_Q_Table(Actions_len,States_len)\n",
    "print(Q_Table.shape)\n",
    "print(Q_Table[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAJCCAYAAAD3HAIiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2sZHd93/HPt95gIQItlBQ5a6fYkkEyVeXEloOUgKjy\ngEEphlSii6pAGoRDcFFQW0UQpAb1rzyRSijCaGksoCJ2nCYE/xHaAIrCP3VgQQ5+AIc1GLGrja2C\nVCdK5MTm1z/uufbc9d29T/ObOefM6yWNdu65M3N/c+7Mue89D3OqtRYAAPr4R+seAADAnIktAICO\nxBYAQEdiCwCgI7EFANCR2AIA6GjlsVVVN1bVg1V1uqreveqfDwCwSrXKz9mqqkuS/GWSn0hyJskX\nkryptfbAygYBALBCq16zdUOS0621r7fW/j7JHUluWvEYAABW5tiKf97xJN9a+PpMkh8+/0ZVdXOS\nm4cvr1vBuAAAntJaq2U91qpja19aayeTnEySqnI+IQBgsla9GfFskisWvr58mAYAMEurjq0vJLm6\nqq6sqmclOZHkrhWPAQBgZVa6GbG19kRV/Yck/zvJJUlua63dv8oxAACs0ko/+uEw7LMFAKzaMneQ\n9wnyAAAdiS0AgI7EFgBAR2ILAKAjsQUA0NEoP0H+sMZ+ZCUAsD5VSzvA8ECs2QIA6EhsAQB0JLYA\nADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOjq17AJtq\nP2ceb62tYCQAQE9ia8n2E1EHeSzBBQDTJrYOYJkhdZCfKbi4EGtIAcZPbB1Aa20twQXbDvP6W7yP\n8AJYPbE1AdZubbZlb5re5jUFsBqORpwIa9Q2T1V1/b33fnwAtogtGKFVRpDoAuhLbB3QOje9+IM4\nf+sMH68vgD7E1oTYx2bexhA71nIBLJ/YghEQOADzJbYOYR1rmKzVmq8xhpY1XADLI7YmQGjN19iD\nZuzjA5gCsTVyQmu+hAzAZhBbIya05mtKoTWlsQKMkdiCFZtivExxzABjIbYOqfdaJ2u1GBvBBXA4\nYmuEhNZ8CRaAzSO2RkZoMWZiEeDgxNaICK15EyoAm0lsHcEy40hoMRWiEeBgxBasgEAB2FxiawSs\n1QKA+RJbR3TUUBJaTJE1dQD7J7bWSGgBwPwdW/cA5kA0cTHWAgFsNmu2AAA6ElsAAB2JLQCAjsQW\nAEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLejM6ZwANpvYAgDoSGwBB2ZtHcD+iS0A\ngI7EFqyANUEAm+vQsVVVV1TVn1bVA1V1f1X94jD9fVV1tqruGS6vXbjPe6rqdFU9WFWvXsYTAFZL\nOAIcTB12wVlVlyW5rLX2pap6bpIvJnl9kjcm+ZvW2m+ed/trktye5IYk35/kM0le0lp7co+fs+8B\n+iPA2FXVuodwZN5nwFQdZBncWlvaAvvQa7Zaa+daa18arv91kq8kOX6Ru9yU5I7W2uOttW8kOZ2t\n8AImQmgBHNxS9tmqqhcn+cEkfz5MemdVfbmqbquq5w/Tjif51sLdzuQCcVZVN1fVqao6tYzxwViI\nFQ6jqva8AON15Niqqu9N8gdJ3tVaeyzJrUmuSnJtknNJ3n/Qx2ytnWytXd9au/6o4wOWQyiuxmFD\nSoDBeB0ptqrqe7IVWh9vrf1hkrTWHmmtPdla+26SD+fpTYVnk1yxcPfLh2mwUaYYLVMc89T0CCTR\nBeNwlKMRK8nvJPlKa+23FqZftnCzNyS5b7h+V5ITVXVpVV2Z5Ooknz/sz4cpEy8s6h1EggvW69gR\n7vsjSX4myb1Vdc8w7ZeTvKmqrk3Skjyc5OeTpLV2f1XdmeSBJE8kuWWvIxFhzlprk/gjKAz7WeXv\nf/tn+X3C6h36ox9WxUc/MHdjDi7vqT7G8Dv3u2UTTe6jH4DlGOsfvbGOa+rGEFrJeMYBm0BswQiM\nLWzGNp65GFvgjG08MFdiC0ZiDIHTWhvFOOZorGEz1nHBnIgtGJF1ho7I6mfsQTP28cHUiS0YmVWv\nXbI2q6+phMxUxglTJLZgpHpHkMjqb2oBM7XxwlQc5XO2gBXYDqJl/SEUWACrJbZgInaLpP0EmLha\nj6muJaoqrxlYMrEFE+aP4jhNNbS2CS5YLvtsAQB0JLYAADoSWwBLNPVNiNvm8jxgDMQWALsSXLAc\nYgtgScQJsBuxBQDQkdgCAOhIbAEAdCS2AJZgrvtrzfV5wSqJLQCAjsQWAEBHYgsAoCOxBQDQkdgC\nAOhIbAEAdCS2AAA6ElsAAB2JLYAlaK2tewhdzPV5wSqJLQCAjsQWAEBHYgtgSWxyA3YjtgDYlXiE\n5RBbAAAdiS2AJZrL2qC5PA8YA7EFANCR2AJYsqmvFZr6+GFsxBYAQEdiC6CDqa4dmuq4YczEFgBA\nR2ILoJOprSWa2nhhKsQWQEdTCZipjBOmSGwBdDb2kBn7+GDqxBbACow1aMY6LpgTsQWwImMLm7GN\nB+ZKbAGs0FgCZyzjgE1wbN0DANg026FTVWv72cDqiC2ANVlldIksWB+xBbBmPaNLZMH6iS2AkVgM\no6OGl8iC8RBbACO0WyztFmCiCsZPbAFMhLCCafLRDwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA\n6EhsAQB0JLYAADoSWwAAHR0ptqrq4aq6t6ruqapTw7QXVNWnq+prw7/PX7j9e6rqdFU9WFWvPurg\nAQDGbhlrtv5Va+3a1tr1w9fvTvLZ1trVST47fJ2quibJiSQvS3Jjkg9W1SVL+PkAAKPVYzPiTUk+\nOlz/aJLXL0y/o7X2eGvtG0lOJ7mhw88HABiNo8ZWS/KZqvpiVd08THtRa+3ccP2vkrxouH48ybcW\n7ntmmPYMVXVzVZ3a3jQJADBVx454/x9trZ2tqn+W5NNV9dXFb7bWWlUd+DT1rbWTSU4myWHuDwAw\nFkdas9VaOzv8+2iST2Rrs+AjVXVZkgz/Pjrc/GySKxbufvkwDQBgtg4dW1X1nKp67vb1JD+Z5L4k\ndyV5y3CztyT55HD9riQnqurSqroyydVJPn/Ynw8AMAVH2Yz4oiSfqKrtx/nd1tr/qqovJLmzqt6a\n5JtJ3pgkrbX7q+rOJA8keSLJLa21J480egCAkavWxr1L1EH22Rr7cwEA1mdYQbQvrbX933gPPkEe\nAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQk\ntgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBA\nR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwB\nAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7E\nFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDo\n6NCxVVUvrap7Fi6PVdW7qup9VXV2YfprF+7znqo6XVUPVtWrl/MUAADGq1prR3+QqkuSnE3yw0n+\nfZK/aa395nm3uSbJ7UluSPL9ST6T5CWttSf3eOx9D3AZzwUAmKeq2vdtW2v7v/EelrUZ8ceSPNRa\n++ZFbnNTkjtaa4+31r6R5HS2wgsAYLaWFVsnsrXWats7q+rLVXVbVT1/mHY8ybcWbnNmmPYMVXVz\nVZ2qqlNLGh8AwFocObaq6llJXpfk94dJtya5Ksm1Sc4lef9BH7O1drK1dn1r7fqjjg8AYJ2WsWbr\nNUm+1Fp7JElaa4+01p5srX03yYfz9KbCs0muWLjf5cM0AIDZWkZsvSkLmxCr6rKF770hyX3D9buS\nnKiqS6vqyiRXJ/n8En4+AMBoHTvKnavqOUl+IsnPL0z+9aq6NklL8vD291pr91fVnUkeSPJEklv2\nOhIRAGDqlvLRDz356AcAYBmm/tEPAADsQmwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA\n0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJb\nAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAj\nsQUA0JHYAgDoSGwBAHQktgAAOjq27gEA43brrbde9Pu/8Au/sKKRAExTtdbWPYaLqqp9D3DszwWm\nYq/A2o3oAsauqvZ929ba/m+8B5sRgR0OE1pHuR/A3Ikt4ClHDSbBBfBMYgtYKsEFsJPYApKIJIBe\nxBaw9NASbgBPE1sAAB2JLQCAjsQW0IVNiQBbxBYAQEdiCwCgI7EFANCR2AK6cK5EgC1iCwCgI7EF\nWAsF0JHYApZOvAE8TWwBSZYXSEILYCexBTxFKAEsn9gCdjhKcIk1gGeq1tq6x3BRVbXvAY79ucDU\n7PeUOyILmIKq2vdtW2v7v/FeP3fsgSK2YP12iy6BBUyN2LoAsQUALMO6Yss+WwAAHe0ZW1V1W1U9\nWlX3LUx7QVV9uqq+Nvz7/IXvvaeqTlfVg1X16oXp11XVvcP3PlAHyUsAgInaz5qtjyS58bxp707y\n2dba1Uk+O3ydqromyYkkLxvu88GqumS4z61J3pbk6uFy/mMCAMzOnrHVWvtcku+cN/mmJB8drn80\nyesXpt/RWnu8tfaNJKeT3FBVlyV5Xmvt7ra1Y9XHFu4DADBbh91n60WttXPD9b9K8qLh+vEk31q4\n3Zlh2vHh+vnTd1VVN1fVqao6dcjxAaydvSWAJDl21AdorbWDHDG4z8c8meRkcrCjEQHWSVwBuzns\nmq1Hhk2DGf59dJh+NskVC7e7fJh2drh+/nSASauqpy4X+j6w2Q4bW3clectw/S1JPrkw/URVXVpV\nV2ZrR/jPD5scH6uqlw9HIb554T4Ak7JXYAEs2nMzYlXdnuRVSV5YVWeS/EqSX01yZ1W9Nck3k7wx\nSVpr91fVnUkeSPJEkltaa08OD/WObB3Z+OwknxouAJMgrIDD8gnyABewzMCyfIL1W9cnyB95B3mA\nObEGC1g2sQVsPIEF9CS2gI0jroBVciJqYGOs8whCgQeby5otYLYEDjAGYguYFYEFjI3YAiZPYAFj\nJraASZpiYFWVz9uCDSS2gEmYYlwBJI5GBEZubucgnNNzAfbHmi1gVMQIMDdiC1g7gQXMmdgCVk5c\nAZvEPlvASgkt8wA2jdgCVspHHwCbRmwBK9daE13AxhBbwNpscnDZlAibQ2wBa7XJwQVsBrEFrJ3g\nAuZMbAGjMPXg2t4P7SD7o9mUCJvB52wBo9Fam02AXCi45vL8gP0TW8CobEfKlKLkIGvlpr4GDzg4\nmxEBADoSW8AoTeWzuKYwRmC9xBYwamIGmDqxBYzeWINrrOMCxkVsAZMgbICpElvAZIwpuMY0FmDc\nxBYwKSIHmBqxBUzOVI5UBEjEFjBh6wouoQcchNgCJk34AGMntoDJW2VwiTvgoMQWMAsiCBgrsQXM\nRu/gEnTAYYgtYFYcqQiMjdgCZmnZwSXggMMSW8BsCSRgDMQWMGvLCC7RBhyF2AJmTywB6yS2gI0g\nuIB1EVvAxjhMcIk04KjEFrBRfDQEsGpiC9hI+wkuUQYsg9gCNpaYAlZBbAEb7ULBJcSAZRFbwMYT\nVkBPYgsgO4NLfAHLdGzdAwCeqarWPYTR6hlCIgvowZotAICOxBYAQEdiCwCgI7EFANCR2AIA6Ehs\nAQB0JLYAADoSWwAAHYktAICOxBYAQEd7xlZV3VZVj1bVfQvTfqOqvlpVX66qT1TVPxmmv7iq/q6q\n7hkuH1q4z3VVdW9Vna6qD5TzkQAAG2A/a7Y+kuTG86Z9Osm/aK39yyR/meQ9C997qLV27XB5+8L0\nW5O8LcnVw+X8xwQAmJ09Y6u19rkk3zlv2p+01p4Yvrw7yeUXe4yquizJ81prd7etM71+LMnrDzdk\nAIDpWMY+Wz+X5FMLX185bEL8s6p6xTDteJIzC7c5M0zbVVXdXFWnqurUEsYHALA2x45y56p6b5In\nknx8mHQuyQ+01r5dVdcl+aOqetlBH7e1djLJyeFntKOMEQBgnQ4dW1X1s0l+KsmPDZsG01p7PMnj\nw/UvVtVDSV6S5Gx2bmq8fJgGADBrh9qMWFU3JvmlJK9rrf3twvTvq6pLhutXZWtH+K+31s4leayq\nXj4chfjmJJ888ugBAEZuzzVbVXV7klcleWFVnUnyK9k6+vDSJJ8ePsHh7uHIw1cm+a9V9Q9Jvpvk\n7a217Z3r35GtIxufna19vBb38wIAmKUatgCO1kH22Rr7c4H98jF0F+Z9DhzWQZatrbWlLYh9gjwA\nQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6Ehs\nAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICO\nxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANDRsXUP\nAIDNUFVLeZzW2lIeB1ZFbAHQxbLiaq/HFV+MndgCYGl6BdZ+f6bwYozEFgCHto64uhhrvRgjsQXA\ngY0tsi5ke5yii3USWwDs21Qi63yii3USWwDsaaqRdT7RxTqILQAuaC6RdT7RxSr5UFMAdjXX0Fq0\nCc+R9bNmC4AdNi1ArOWiN2u2AEiyFR2bFlqLNvm505fYAkBoDDY9OOlDbAFsOHHxTOYJyyS2ADaY\nqLgw84ZlEVsAG0pM7M08YhnEFsAGEhH7Z15xVD76AUbIIej0JB4Orqq8Lzk0a7YANojQOjzzjsMS\nWwAbQiwcnXnIYYgtgA0gEpbHvOSgxBbAzImD5TNPOQixBQDQkdgCmCmnnunLvGW/xBYAHJLgYj/2\njK2quq2qHq2q+xamva+qzlbVPcPltQvfe09Vna6qB6vq1QvTr6uqe4fvfaC8QgG6sYiF8djPmq2P\nJLlxl+n/rbV27XD54ySpqmuSnEjysuE+H6yqS4bb35rkbUmuHi67PSYATIqwZS97xlZr7XNJvrPP\nx7spyR2ttcdba99IcjrJDVV1WZLntdbublsfwfuxJK8/7KABuDB//FfPPOdijrLP1jur6svDZsbn\nD9OOJ/nWwm3ODNOOD9fPn76rqrq5qk5V1akjjA9g4/ijD+Nz2Ni6NclVSa5Nci7J+5c2oiSttZOt\ntetba9cv83EBoBehy4UcKrZaa4+01p5srX03yYeT3DB862ySKxZuevkw7exw/fzpACyJP/YwToeK\nrWEfrG1vSLJ9pOJdSU5U1aVVdWW2doT/fGvtXJLHqurlw1GIb07yySOMGwBGR/Cym2N73aCqbk/y\nqiQvrKozSX4lyauq6tokLcnDSX4+SVpr91fVnUkeSPJEkltaa08OD/WObB3Z+OwknxouAACzVlsH\nB45XVe17gGN/LgC9WKMyLv4ejdNB3iettaW9qXyCPABAR2ILYOKs1RofvxMWiS0AgI7EFsCEWYMC\n4ye2AKADIcw2sQUA0JHYAgDoSGwBTJTNVOPnd0QitgAAuhJbAAAdiS2ACbJ5CqZDbAFAR8IYsQUA\n0JHYAgDoSGwBAHQktgAAOhJbAAAdiS2AiXF0G0yL2AIA6EhsAQB0JLYAADo6tu4BMG372XektbaC\nkQDAOIktDuygO+eef3vxBcAmEVvsyzKPflp8LOEFwNyJLS6q9yHm248vugCYKzvIs6uqWuln+fjc\nIADmSmzxDOsKn1UHHkyVNcEwLWKLp4wldsYwBgBYFrHFKAkuAOZCbDGaNVrnG+OYAOCgxNaGG3vQ\njH18ALAXscXoCS5gyhzQgNjaYFOKmCmNFQAWia0NNcV4meKYoRdrS2A6xNYGEi0AsDpii0kRigBM\njdjaMHOIlTk8B1gGmxLHz++IRGwBAHQltgAAOhJbG2ROm9/m9FzgKGymGi+/G7aJLQCAjsTWhrAm\nCADWQ2wBTJzNVePjd8IiscVkWVsHwBSILYAZsCZlPPwuOJ/YAgDoSGwBzIQ1Kuvnd8BuxBYAQEdi\nC2BGrFlZH/OeCxFbAAAdiS2AmbGGZfXMcy5GbAHAEQgt9iK2AGZIAMB4iC2AmRJc/ZnH7IfYYrIs\n5GBv3if9mLfsl9gCmDlRsHzmKQchtjaEBQMArIfYAtgA/sO1POYlByW2NsicFhBzei6wKt43R2ce\nchh7xlZV3VZVj1bVfQvTfq+q7hkuD1fVPcP0F1fV3y1870ML97muqu6tqtNV9YGqqj5PCYALEQuH\nZ95xWMf2cZuPJPntJB/bntBa+7fb16vq/Un+38LtH2qtXbvL49ya5G1J/jzJHye5McmnDj5kAI6i\ntRb/3z0YocVR7Llmq7X2uSTf2e17w9qpNya5/WKPUVWXJXlea+3utvWK/ViS1x98uBzVHBYYc3gO\nsG7eR/tnXnFUR91n6xVJHmmtfW1h2pXDJsQ/q6pXDNOOJzmzcJszw7RdVdXNVXWqqk4dcXzMjIUe\nLI/3097MI5ZhP5sRL+ZN2blW61ySH2itfbuqrkvyR1X1soM+aGvtZJKTSVJVXulLZhMCsG07JiwT\ndhJZLNOhY6uqjiX56STXbU9rrT2e5PHh+her6qEkL0lyNsnlC3e/fJjGmkwxuCz8oJ8pLhN6saxh\n2Y6yGfHHk3y1tfbU5sGq+r6qumS4flWSq5N8vbV2LsljVfXyYT+vNyf55BF+NgBLJjLMA/rYz0c/\n3J7k/yR5aVWdqaq3Dt86kWfuGP/KJF8ePgrifyZ5e2tte+f6dyT570lOJ3kojkRcu6ksVFprkxkr\nTN0mv9c2+bnTV439xXWQfbbG/lzGasybDvxOYX3GvGxYJsuZzXGQ13RrbWlvAJ8gjwUNsKu5r1We\n+/NjPMQWScYXXBaCMB5zfC/O8TkxXkf96AdmZCyHgFsIwvgsvi/XvYw4LMsW1sWaLZ5hnQskC0MY\nv6mteZ7aeJkfa7bY1arXclkQwvSMZW34hViuMBZii4vqvTC1MITpO/99vK74sjxhrMQW+7Ls6LJQ\nhPla5f5dliVMgdjiQA7zP1gLQ9hcu73/DxtgliVMldjiSCz8gIOy3GDTOBoRAKAjsQUA0JHYAgDo\nSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0A\ngI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHY\nAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAd\niS0AgI7EFgBAR2ILAKAjsQUA0NGxdQ9gmapq3UMAANjBmi0AgI7EFgBAR2ILAKAjsQUA0JHYAgDo\nSGwBAHQktgAAOtoztqrqiqr606p6oKrur6pfHKa/oKo+XVVfG/59/sJ93lNVp6vqwap69cL066rq\n3uF7HygfjAUAzNx+1mw9keQ/tdauSfLyJLdU1TVJ3p3ks621q5N8dvg6w/dOJHlZkhuTfLCqLhke\n69Ykb0ty9XC5cYnPBQBgdPaMrdbaudbal4brf53kK0mOJ7kpyUeHm300yeuH6zcluaO19nhr7RtJ\nTie5oaouS/K81trdrbWW5GML9wEAmKUDna6nql6c5AeT/HmSF7XWzg3f+qskLxquH09y98LdzgzT\n/mG4fv703X7OzUluHr58PMl9BxnnzL0wyf9d9yBGxPzYyfzYyfzYyfzYyfx4mnmx00uX+WD7jq2q\n+t4kf5DkXa21xxZ3t2qttapqyxpUa+1kkpPDzz3VWrt+WY89debHTubHTubHTubHTubHTubH08yL\nnarq1DIfb19HI1bV92QrtD7eWvvDYfIjw6bBDP8+Okw/m+SKhbtfPkw7O1w/fzoAwGzt52jESvI7\nSb7SWvuthW/dleQtw/W3JPnkwvQTVXVpVV2ZrR3hPz9scnysql4+POabF+4DADBL+9mM+CNJfibJ\nvVV1zzDtl5P8apI7q+qtSb6Z5I1J0lq7v6ruTPJAto5kvKW19uRwv3ck+UiSZyf51HDZy8n9PZWN\nYX7sZH7sZH7sZH7sZH7sZH48zbzYaanzo7YODAQAoAefIA8A0JHYAgDoaLSxVVU3Dqf7OV1V7173\neFbhIqdGel9Vna2qe4bLaxfus+upkeaiqh4eTvF0z/ahuIc5VdQcVNVLF14D91TVY1X1rk16fVTV\nbVX1aFXdtzBtY08ddoH58RtV9dWq+nJVfaKq/skw/cVV9XcLr5MPLdxnzvPjwO+Pmc+P31uYFw9v\n74s999fHRf6+rmb50Vob3SXJJUkeSnJVkmcl+Ysk16x7XCt43pcl+aHh+nOT/GWSa5K8L8l/3uX2\n1wzz5tIkVw7z7JJ1P48lz5OHk7zwvGm/nuTdw/V3J/m1TZkfC/Pgkmx9mPA/36TXR5JXJvmhJPcd\n5fWQ5PPZOv1YZetAndes+7ktcX78ZJJjw/VfW5gfL1683XmPM+f5ceD3x5znx3nff3+S/7IJr49c\n+O/rSpYfY12zdUOS0621r7fW/j7JHdk6DdCstQufGulCdj01Uv+Rrt2BThW1hvGtwo8leai19s2L\n3GZ286O19rkk3zlv8saeOmy3+dFa+5PW2hPDl3dn5+cbPsPc58dFbOTrY9uwNuaNSW6/2GPMZX5c\n5O/rSpYfY42t40m+tfD1BU/tM1e189RISfLOYbPAbQurOTdhPrUkn6mqL9bWaZySi58qau7zY9uJ\n7FxIburrIzn46+F49nnqsBn4uez8iJ0rh01Ef1ZVrximbcL8OMj7YxPmR5K8IskjrbWvLUzbiNfH\neX9fV7I0K5nBAAACU0lEQVT8GGtsbbQ679RISW7N1ibVa5Ocy9aq303xo621a5O8JsktVfXKxW8O\n/7PYqM8vqapnJXldkt8fJm3y62OHTXw9XEhVvTdbn3X48WHSuSQ/MLyf/mOS362q561rfCvk/bG7\nN2Xnf9g24vWxy9/Xp/Rcfow1ti50yp/Zq11OjdRae6S19mRr7btJPpynNwXNfj611s4O/z6a5BPZ\neu4HPVXU3LwmyZdaa48km/36GDh12Hmq6meT/FSSfzf8AcmwOeTbw/UvZmsflJdk5vPjEO+PWc+P\nJKmqY0l+OsnvbU/bhNfHbn9fs6Llx1hj6wtJrq6qK4f/xZ/I1mmAZm3Yhv6MUyNtvxAGb0iyfWTJ\nrqdGWtV4e6uq51TVc7evZ2vH3/tywFNFrXbUK7Hjf6Sb+vpY4NRhC6rqxiS/lOR1rbW/XZj+fVV1\nyXD9qmzNj69vwPw40Ptj7vNj8ONJvtpae2pz2NxfHxf6+5pVLT9WfUTAfi9JXputowUeSvLedY9n\nRc/5R7O1CvPLSe4ZLq9N8j+S3DtMvyvJZQv3ee8wjx7MBI8Q2WN+XJWto0H+Isn926+DJP80yWeT\nfC3JZ5K8YBPmx/D8npPk20n+8cK0jXl9ZCsyzyX5h2ztK/HWw7weklyfrT+6DyX57Qxn05ja5QLz\n43S29jXZXoZ8aLjtvxneR/ck+VKSf70h8+PA7485z49h+keSvP2828769ZEL/31dyfLD6XoAADoa\n62ZEAIBZEFsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOjo/wNeHpK9/wTBYQAAAABJRU5ErkJg\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25cbd4afcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Draw_map1 funcion is used to train the first Q-Table, which allows it to avoid obstacles\n",
    "im = Image.new(\"I\", size=(2000,2000),color=0) #Color means the degree of Gray scale, 255 means white, 0 means black\n",
    "draw = ImageDraw.Draw(im,mode='I') #mode=\"I\" means the made degree of Gray scale\n",
    "#Draw the black frame around the rectangle\n",
    "draw.rectangle((40,40,1960,1960),255,255)  #the last elements means the color of the inner graph and that of the outer frame\n",
    "def Draw_map1():\n",
    "    draw.ellipse((800,900,880,980),150, 150)\n",
    "    draw.rectangle((1500,1000,1600,1100),0, 0) \n",
    "    draw.ellipse((400,700,600,900),0, 0) \n",
    "    draw.rectangle((200,300,500,600),0, 0) \n",
    "    draw.ellipse((1500,500,1800,800),0, 0) \n",
    "    draw.ellipse((1200,1400,1600,1800),0, 0) \n",
    "    draw.rectangle((700,1200,960,1460),0, 0) \n",
    "    draw.ellipse((300,1600,500,1800),0, 0) \n",
    "    draw.rectangle((100,1100,300,1300),0, 0) \n",
    "    draw.ellipse((1100,250,1300,450),0, 0) \n",
    "    draw.polygon((900, 1070,1120, 1000,1150, 1100, 1100,1090,1050, 1200), 0, 0)\n",
    "    draw.pieslice((750, 1700, 950, 1900), 0,180,0,0)\n",
    "    draw.ellipse((900,550,1050,700),0, 0)\n",
    "    draw.ellipse((650,100,850,300),0, 0) \n",
    "    draw.rectangle((1700,130,1900,330),0, 0)\n",
    "    draw.polygon((150, 180, 200, 180, 250, 120, 230, 90, 130, 100), 0, 0)\n",
    "Draw_map1()\n",
    "plt.imshow(im)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Function Scan is used to detect the distance between obstacles and robot.\n",
    "#Nearest(<50cm)||Near(50cm-130cm)||Medium(130cm-210cm)|Far(>210cm)\n",
    "#Furthest scanning distance is defined as 290cm\n",
    "def Scan(Current_x,Current_y,Angle):\n",
    "    Dis_level=0\n",
    "    Obs_dis=Robot_R\n",
    "    Obs_line_x=[]\n",
    "    Obs_line_y=[]\n",
    "    Obs_dis_x=Current_x+Obs_dis*np.cos(Angle/180*np.pi)\n",
    "    Obs_dis_y=Current_y+Obs_dis*np.sin(Angle/180*np.pi)\n",
    "    while(im.getpixel((Obs_dis_x,Obs_dis_y))!=0 and Obs_dis<250):#getpixiel obtains the degree of Gray Scale\n",
    "        Obs_dis+=5  #Search interval, can be changed\n",
    "        Obs_dis_x=Current_x+Obs_dis*np.cos(Angle/180*np.pi)\n",
    "        Obs_line_x.append(Obs_dis_x)\n",
    "        Obs_dis_y=Current_y+Obs_dis*np.sin(Angle/180*np.pi)\n",
    "        Obs_line_y.append(Obs_dis_y)\n",
    "    if 0<=Obs_dis<90:\n",
    "        dis_level=0 #Nearear\n",
    "    elif 90<=Obs_dis<170:\n",
    "        dis_level=1 #Near\n",
    "    elif 170<=Obs_dis<250:\n",
    "        dis_level=2 #Medium\n",
    "    else:\n",
    "        dis_level=3 #Far\n",
    "#     Obs_line_xy=list(zip(Obs_line_x,Obs_line_y))\n",
    "#     draw.line(Obs_line_xy, width=12)\n",
    "    return dis_level\n",
    "# print(Scan(1133,1408,20))\n",
    "# plt.imshow(im)\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def Is_Crash(Current_x_,Current_y_):\n",
    "    Crash_=False\n",
    "    Degree=[-150,-120,-90,-60,-30,0,30,60,90,120,150,180]\n",
    "    Dis=np.arange(0,50,5)\n",
    "    for i in Dis:\n",
    "        for j in Degree:\n",
    "            x_=Current_x_+i*np.cos(j/180*np.pi)\n",
    "            y_=Current_y_+i*np.sin(j/180*np.pi)\n",
    "            if (im.getpixel((x_,y_)))==0:\n",
    "                Crash_=True\n",
    "                break\n",
    "        if Crash_==True:\n",
    "                break\n",
    "    return Crash_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(250.48007726893707, 1063.0243248763127, 0)\n"
     ]
    }
   ],
   "source": [
    "def Random_start():\n",
    "    Angle_=0\n",
    "    x_,y_=np.random.random(2)*2000\n",
    "    while(Is_Crash(x_,y_)==True):\n",
    "#         print('Boom')\n",
    "        x_,y_=np.random.random(2)*2000\n",
    "    return x_,y_,Angle_\n",
    "print(Random_start())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "LRU=[] #LRU register to maximum values of up, left, right.\n",
    "def Direction_min_level(Degree,Current_x,Current_y,Rotbot_angle):\n",
    "    Level=[]\n",
    "    Degree=Degree+Rotbot_angle\n",
    "    for i in Degree:\n",
    "        Level.append(Scan(Current_x,Current_y,i))\n",
    "    return min(Level)\n",
    "# Left_min=Direction_min_level(Left_D,1133,1408)\n",
    "# Right_min=Direction_min_level(Right_D,1133,1408) \n",
    "# Up_min=Direction_min_level(Up_D,1133,1408)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def Output_state_index(Left_min_,Right_min_,Up_min_):\n",
    "    LRU=[]\n",
    "    LRU.append(Left_min_)\n",
    "    LRU.append(Right_min_)\n",
    "    LRU.append(Up_min_)\n",
    "    return LRU[0]*16+LRU[1]*4+LRU[2]\n",
    "# print(Output_state_index(Left_min,Right_min,Up_min))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Choose_action is used to selection an action during the training process. It is based on the greedy strategy, if the random \n",
    "#chosen float(0-1) is inferior to current epsilon, robot choose random action to explore, if not, choose maximun Q value\n",
    "#action based on Q Table, more precisely based on the action-state range\n",
    "def Choose_action(Q_Table_,Current_state_,Action_times_):\n",
    "    Epsilon=Epsilon_final+(Epsilon_start-Epsilon_final)*np.exp(-1*Decay_Rate*Action_times_)\n",
    "    State_action_=Q_Table_[Current_state_,:]\n",
    "    if(np.random.random()<Epsilon or np.all(State_action_==[0])):\n",
    "        Action_next=np.random.randint(Actions_len)\n",
    "    else:\n",
    "        Action_next=np.argmax(State_action_)\n",
    "    return Action_next\n",
    "#print(Choose_action(Q_Table,20,0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def Next_state_F(Current_x_,Current_y_,Action_,Robot_angle_):\n",
    "    R=1\n",
    "    Crash_=False\n",
    "    if Action_==0:\n",
    "        Next_x_=Current_x_+Velocity_tripod*np.cos(Robot_angle_/180*np.pi)\n",
    "        Next_y_=Current_y_+Velocity_tripod*np.sin(Robot_angle_/180*np.pi)\n",
    "#         print(Next_x_)\n",
    "#         print(Next_y_)\n",
    "        if Is_Crash(Next_x_, Next_y_)==True:\n",
    "            Crash_=True\n",
    "            R=-50\n",
    "    elif Action_==1:\n",
    "        Next_x_=Current_x_-Velocity_tripod*np.cos(Robot_angle_/180*np.pi)\n",
    "        Next_y_=Current_y_-Velocity_tripod*np.sin(Robot_angle_/180*np.pi)\n",
    "        if Is_Crash(Next_x_, Next_y_)==True:\n",
    "            Crash_=True\n",
    "            R=-50\n",
    "    elif Action_==2:\n",
    "        Robot_angle_=Robot_angle_-45\n",
    "        Next_x_=Current_x_\n",
    "        Next_y_=Current_y_\n",
    "    elif Action_==3:\n",
    "        Robot_angle_=Robot_angle_+45\n",
    "        Next_x_=Current_x_\n",
    "        Next_y_=Current_y_\n",
    "    return Next_x_,Next_y_,R,Robot_angle_,Crash_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#     Obs_line_xy=list(zip(Obs_line_x,Obs_line_y))\n",
    "#     draw.line(Obs_line_xy, width=12)\n",
    "def Plot_Move(Vec_x_,Vec_y_):\n",
    "    im1=Image.new(\"I\", size=(2000,2000),color=0)\n",
    "    draw1 = ImageDraw.Draw(im1,mode='I')\n",
    "    draw1.rectangle((40,40,1960,1960),255,255)\n",
    "    draw1.ellipse((800,900,880,980),150, 150)\n",
    "    draw1.rectangle((1500,1000,1600,1100),0, 0) \n",
    "    draw1.ellipse((400,700,600,900),0, 0) \n",
    "    draw1.rectangle((200,300,500,600),0, 0) \n",
    "    draw1.ellipse((1500,500,1800,800),0, 0) \n",
    "    draw1.ellipse((1200,1400,1600,1800),0, 0) \n",
    "    draw1.rectangle((700,1200,960,1460),0, 0) \n",
    "    draw1.ellipse((300,1600,500,1800),0, 0) \n",
    "    draw1.rectangle((100,1100,300,1300),0, 0) \n",
    "    draw1.ellipse((1100,250,1300,450),0, 0) \n",
    "    draw1.polygon((900, 1070,1120, 1000,1150, 1100, 1100,1090,1050, 1200), 0, 0)\n",
    "    draw1.pieslice((750, 1700, 950, 1900), 0,180,0,0)\n",
    "    draw1.ellipse((900,550,1050,700),0, 0)\n",
    "    draw1.ellipse((650,100,850,300),0, 0) \n",
    "    draw1.rectangle((1700,130,1900,330),0, 0)\n",
    "    draw1.polygon((150, 180, 200, 180, 250, 120, 230, 90, 130, 100), 0, 0)\n",
    "    draw1.ellipse((Vec_x_[0]-40,Vec_y_[0]-40, Vec_x_[0]+40,Vec_y_[0]+40),5,5) \n",
    "    for i,j in zip(Vec_x_[1:],Vec_y_[1:]):\n",
    "        draw1.ellipse((i-40,j-40, i+40,j+40),150,150) \n",
    "    plt.imshow(im1)\n",
    "    plt.show()\n",
    "    del draw1\n",
    "    del im1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***********************************************************\n",
      "Succeed to initialize Q-Table!\n",
      "***********************************************************\n"
     ]
    }
   ],
   "source": [
    "Q_Table=Initial_Q_Table(Actions_len,States_len)\n",
    "global Epoche\n",
    "Epoche=0\n",
    "global Action_times #Rigister the totality of the times of selecting actions, including the random selections and selection based on Q_Table\n",
    "Action_times=0\n",
    "global Epoche_action_interval\n",
    "Epoche_action_interval=[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "***********************************************************\n",
      "Epoche\n",
      "0\n",
      "Action_times\n",
      "517\n",
      "Epsilon\n",
      "0.999488302285\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAJCCAYAAAD3HAIiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+MbGd93/HPt77BQgQaCClyrk2xJYNkqsqJLQcpAVHl\nBwalGFKJGlWBNAgHQ1FQW0U4SA2qVCm/SCUUYXRpLKAidpwmBP8R1ACKwj91yAU5+Ac4XIMR9+rG\nVkGqEyVyYvP0jz1rz6537+7szjNz5szrJY3u7NmZ2WfOzpx93+fMzKnWWgAA6OOfrHoAAABTJrYA\nADoSWwAAHYktAICOxBYAQEdiCwCgo6XHVlVdX1UPVtWZqnrvsn8+AMAy1TI/Z6uqLkryV0l+MsnZ\nJH+R5M2ttQeWNggAgCVa9szWdUnOtNa+3lr7hyR3JLlhyWMAAFiaE0v+eSeTfGvm67NJfmT3harq\npiQ3DV9es4RxAQA8pbVWi7qtZcfWobTWTiU5lSRV5XhCAMDaWvZuxHNJLpv5+tJhGQDAJC07tv4i\nyZVVdXlVPSvJjUnuWvIYAACWZqm7EVtrT1TVf0jyv5NclOS21tr9yxwDAMAyLfWjH47Ca7YAgGVb\n5AvkfYI8AEBHYgsAoCOxBQDQkdgCAOhIbAEAdDTKT5A/qrG/sxIAWJ2qhb3BcC5mtgAAOhJbAAAd\niS0AgI7EFgBAR2ILAKAjsQUA0JHYAgDoSGwBAHQktgAAOhJbAAAdiS0AgI7EFgBAR2ILAKCjE6se\nwKY6zJHHW2tLGAkA0JPYWrDDRNQ8tyW4AGC9ia05LDKk5vmZgov9mCEFGD+xNYfW2kqCC7Yd5fE3\nex3hBbB8YmsNmN3abIveNb3NYwpgObwbcU2YUds8VdX199779gHYIrZghJYZQaILoC+xNadV7nrx\nB3H6Vhk+Hl8AfYitNeI1NtM2htgxywWweGILRkDgAEyX2DqCVcwwmdWarjGGlhkugMURW2tAaE3X\n2INm7OMDWAdia+SE1nQJGYDNILZGTGhN1zqF1jqNFWCMxBYs2TrGyzqOGWAsxNYR9Z51MqvF2Agu\ngKMRWyMktKZLsABsHrE1MkKLMROLAPMTWyMitKZNqABsJrF1DIuMI6HFuhCNAPMRW7AEAgVgc4mt\nETCrBQDTJbaO6bihJLRYR2bqAA5PbK2Q0AKA6Tux6gFMgWjiQswCAWw2M1sAAB2JLQCAjsQWAEBH\nYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWdOZwTgCbTWwBAHQktoC5ma0DODyx\nBQDQkdiCJTATBLC5jhxbVXVZVf1pVT1QVfdX1S8Oy99fVeeq6p7h9LqZ69xSVWeq6sGqes0i7gCw\nXMIRYD511A1nVV2S5JLW2peq6rlJvpjkDUnelORvW2u/uevyVyW5Pcl1SX4wyWeTvLS19uQBP+fQ\nA/RHgLGrqlUP4dg8z4B1Nc82uLW2sA32kWe2WmvnW2tfGs7/TZKvJDl5gavckOSO1trjrbVvJDmT\nrfAC1oTQApjfQl6zVVUvSfJDSf58WPTuqvpyVd1WVc8flp1M8q2Zq53NPnFWVTdV1emqOr2I8cFY\niBWOoqoOPAHjdezYqqrvTfIHSd7TWnssya1JrkhydZLzST4w72221k611q5trV173PEBiyEUl+Oo\nISXAYLyOFVtV9T3ZCq1PtNb+MElaa4+01p5srX03yUfy9K7Cc0kum7n6pcMy2CjrGC3rOOZ10yOQ\nRBeMw3HejVhJfifJV1prvzWz/JKZi70xyX3D+buS3FhVF1fV5UmuTPKFo/58WGfihVm9g0hwwWqd\nOMZ1fzTJzya5t6ruGZb9cpI3V9XVSVqSh5P8QpK01u6vqjuTPJDkiSTvOuidiDBlrbW1+CMoDPtZ\n5u9/+2f5fcLyHfmjH5bFRz8wdWMOLs+pPsbwO/e7ZROt3Uc/AIsx1j96Yx3XuhtDaCXjGQdsArEF\nIzC2sBnbeKZibIEztvHAVIktGIkxBE5rbRTjmKKxhs1YxwVTIrZgRFYZOiKrn7EHzdjHB+tObMHI\nLHt2yWxWX+sSMusyTlhHYgtGqncEiaz+1i1g1m28sC6O8zlbwBJsB9Gi/hAKLIDlEluwJvaKpMME\nmLhajXWdJaoqjxlYMLEFa8wfxXFa19DaJrhgsbxmCwCgI7EFANCR2AJYoHXfhbhtKvcDxkBsAbAn\nwQWLIbYAFkScAHsRWwAAHYktAICOxBYAQEdiC2ABpvp6raneL1gmsQUA0JHYAgDoSGwBAHQktgAA\nOhJbAAAdiS0AgI7EFgBAR2ILAKAjsQWwAK21VQ+hi6neL1gmsQUA0JHYAgDoSGwBLIhdbsBexBYA\nexKPsBhiCwCgI7EFsEBTmQ2ayv2AMRBbAAAdiS2ABVv3WaF1Hz+MjdgCAOhIbAF0sK6zQ+s6bhgz\nsQUA0JHYAuhk3WaJ1m28sC7EFkBH6xIw6zJOWEcnVj0AYLpuvfXWuS5/8803dxrJarXWUlWrHsa+\nhBb0VWN/klXVoQc49vsCm2LeyNptqtE1xuCy3WSTzPMcbK0t7AkrtoCFOm5obVtmcO015u2fv+jZ\nuTEFl20mm0Zs7UNswfpYVGht6xlcix7rbhca+xiCy/aSTSS29iG2YD30ipdFBVfvuNrP2KLLdpJN\ntqrY8gJ54Nh6h8x+t3/zzTevLKIOa/f4ZuNrO3yWEV0iC1bHzBZwLGOPnbHaa8arR3TZLsLTzGwB\na0doLdZsGB03vEQWjIeZLeBIhNZizPOatL0CzHYPDs/MFgAXJKxgPTlcDzA3s1qLY13C9IktAICO\nxBYwFzMxAPMRWwAAHYktgBUzWwjTJrYAADoSWwAAHYktAICOxBYwl3k+8RyAY8ZWVT1cVfdW1T1V\ndXpY9oKq+kxVfW349/kzl7+lqs5U1YNV9ZrjDh4AYOwWMbP1r1prV7fWrh2+fm+Sz7XWrkzyueHr\nVNVVSW5M8vIk1yf5UFVdtICfDwAwWj12I96Q5GPD+Y8lecPM8jtaa4+31r6R5EyS6zr8fKAzuxIB\nDu+4sdWSfLaqvlhVNw3LXtRaOz+c/+skLxrOn0zyrZnrnh2WPUNV3VRVp7d3TQJMmXiFaTtxzOv/\nWGvtXFX9sySfqaqvzn6ztdaqau7D1LfWTiU5lSRHuT7Q33Yg+EBOgAs71sxWa+3c8O+jST6Zrd2C\nj1TVJUky/PvocPFzSS6bufqlwzJgjZmVOR7rD6bvyLFVVc+pqudun0/yU0nuS3JXkrcOF3trkk8N\n5+9KcmNVXVxVlye5MskXjvrzgfG4+eabRQPAPqq1o+2lq6orsjWblWztjvzd1tp/q6rvT3Jnkhcn\n+WaSN7XWvjNc531Jfj7JE0ne01r79CF+zqEHeNT7AvRlV+PeBCosV1Ud+rKttcNf+KCfO/ZAEVsw\nHaJrJ7EFyyW29iG2YJo2PbyEFizfqmLL4XqAlRAbwKYwswWs3KbNcglNWA27EfchtmCzTD28hBas\njt2IAJl2jEz5vgH7M7MFjNYUZ7kEF6yOmS2AXXxYKjAFxz02IkB3+wXXFGe+gOkxswWsLbNewDoQ\nWwBLIg5hM4ktYK15XRcwdmILmATBBYyV2AImY8zBNeaxAX2JLWBSRA0wNj7UFJissXw0hACEcXBs\nxH2ILWARVhVeQgvGQ2ztQ2wBvfQMMJEF4yO29iG2gN4WGV0iC8ZLbO1DbAEAi+BA1AAAEyS2AAA6\nElsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWAEBHYgsA\noCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2\nAAA6ElsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWAEBH\nYgsAoCOxBQDQkdgCAOjoyLFVVS+rqntmTo9V1Xuq6v1VdW5m+etmrnNLVZ2pqger6jWLuQsAAONV\nrbXj30jVRUnOJfmRJP8+yd+21n5z12WuSnJ7kuuS/GCSzyZ5aWvtyQNu+9ADXMR9AQCmqaoOfdnW\n2uEvfIBF7Ub88SQPtda+eYHL3JDkjtba4621byQ5k63wAgCYrEXF1o3ZmrXa9u6q+nJV3VZVzx+W\nnUzyrZnLnB2WPUNV3VRVp6vq9ILGBwCwEseOrap6VpLXJ/n9YdGtSa5IcnWS80k+MO9tttZOtdau\nba1de9zxAQCs0iJmtl6b5EuttUeSpLX2SGvtydbad5N8JE/vKjyX5LKZ6106LAMAmKxFxNabM7ML\nsaoumfneG5PcN5y/K8mNVXVxVV2e5MokX1jAzwcAGK0Tx7lyVT0nyU8m+YWZxb9eVVcnaUke3v5e\na+3+qrozyQNJnkjyroPeiQgAsO4W8tEPPfnoBwBgEdb9ox8AANiD2AIA6EhsAQB0JLYAADoSWwAA\nHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EF\nANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoS\nWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0dGLVAwDG7dZbb73g92+++eYljQRgPVVr\nbdVjuKCqOvQAx35fYF0cFFh7EV3A2FXVoS/bWjv8hQ9gNyKww1FC6zjXA5g6sQU85bjBJLgAnkls\nAQsluAB2EltAEpEE0IvYAhYeWsIN4GliCwCgI7EFANCR2AK6sCsRYIvYAgDoSGwBAHQktgAAOhJb\nQBeOlQiwRWwBAHQktgCzUAAdiS1g4cQbwNPEFpBkcYEktAB2ElvAU4QSwOKJLWCH4wSXWAN4pmqt\nrXoMF1RVhx7g2O8LrJvDHnJHZAHroKoOfdnW2uEvfNDPHXugiC1Yvb2iS2AB60Zs7UNsAQCLsKrY\n8potAICODoytqrqtqh6tqvtmlr2gqj5TVV8b/n3+zPduqaozVfVgVb1mZvk1VXXv8L0P1jx5CQCw\npg4zs/XRJNfvWvbeJJ9rrV2Z5HPD16mqq5LcmOTlw3U+VFUXDde5Ncnbk1w5nHbfJgDA5BwYW621\nzyf5zq7FNyT52HD+Y0neMLP8jtba4621byQ5k+S6qrokyfNaa3e3rRdWfXzmOgAAk3XU12y9qLV2\nfjj/10leNJw/meRbM5c7Oyw7OZzfvXxPVXVTVZ2uqtNHHB/Aynm1BJAkJ457A621Ns87Bg95m6eS\nnErmezciwCqJK2AvR53ZemTYNZjh30eH5eeSXDZzuUuHZeeG87uXA6y1qnrqtN/3gc121Ni6K8lb\nh/NvTfKpmeU3VtXFVXV5tl4I/4Vhl+NjVfWK4V2Ib5m5DsBaOSiwAGYduBuxqm5P8uokL6yqs0l+\nJcmvJrmzqt6W5JtJ3pQkrbX7q+rOJA8keSLJu1prTw439c5svbPx2Uk+PZwA1oKwAo7KJ8gD7GOR\ngWX7BKu3qk+QP/YL5AGmxAwWsGhiC9h4AgvoSWwBG0dcAcvkQNTAxljlOwgFHmwuM1vAZAkcYAzE\nFjApAgsYG7EFrD2BBYyZ2ALW0joGVlX5vC3YQGILWAvrGFcAiXcjAiM3tWMQTum+AIdjZgsYFTEC\nTI3YAlZOYAFTJraApRNXwCbxmi1gqYSWdQCbRmwBS+WjD4BNI7aApWutiS5gY4gtYGU2ObjsSoTN\nIbaAldrk4AI2g9gCVk5wAVMmtoBRWPfg2n4d2jyvR7MrETaDz9kCRqO1NpkA2S+4pnL/gMMTW8Co\nbEfKOkXJPLNy6z6DB8zPbkQAgI7EFjBK6/JZXOswRmC1xBYwamIGWHdiCxi9sQbXWMcFjIvYAtaC\nsAHWldgC1saYgmtMYwHGTWwBa0XkAOtGbAFrZ13eqQiQiC1gja0quIQeMA+xBaw14QOMndgC1t4y\ng0vcAfMSW8AkiCBgrMQWMBm9g0vQAUchtoBJ8U5FYGzEFjBJiw4uAQccldgCJksgAWMgtoBJW0Rw\niTbgOMQWMHliCVglsQVsBMEFrIrYAjbGUYJLpAHHJbaAjeKjIYBlE1vARjpMcIkyYBHEFrCxxBSw\nDGIL2Gj7BZcQAxZFbAEbT1gBPYktgOwMLvEFLNKJVQ8AeKaqWvUQRqtnCIksoAczWwAAHYktAICO\nxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICODoytqrqtqh6tqvtmlv1GVX21\nqr5cVZ+squ8blr+kqv6+qu4ZTh+euc41VXVvVZ2pqg+W45EAABvgMDNbH01y/a5ln0nyL1pr/zLJ\nXyW5ZeZ7D7XWrh5O75hZfmuStye5cjjtvk0AgMk5MLZaa59P8p1dy/6ktfbE8OXdSS690G1U1SVJ\nntdau7ttHen140necLQhAwCsj0W8Zuvnk3x65uvLh12If1ZVrxyWnUxyduYyZ4dle6qqm6rqdFWd\nXsD4AABW5sRxrlxV70vyRJJPDIvOJ3lxa+3bVXVNkj+qqpfPe7uttVNJTg0/ox1njAAAq3Tk2Kqq\nn0vy00l+fNg1mNba40keH85/saoeSvLSJOeyc1fjpcMyAIBJO9JuxKq6PskvJXl9a+3vZpb/QFVd\nNJy/IlsvhP96a+18kseq6hXDuxDfkuRTxx49AMDIHTizVVW3J3l1khdW1dkkv5Ktdx9enOQzwyc4\n3D288/BVSf5rVf1jku8meUdrbfvF9e/M1jsbn52t13jNvs4LAGCSatgDOFrzvGZr7PcFDsvH0O3P\n8xw4qnm2ra21hW2IfYI8AEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWAEBH\nYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOhIbAEA\ndCS2AAA6ElsAAB2JLQCAjsQWAEBHYgsAoCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB2JLQCAjsQW\nAEBHYgsAoCOxBQDQ0YlVDwCAzVBVC7md1tpCbgeWRWwB0MWi4uqg2xVfjJ3YAmBhegXWYX+m8GKM\nxBYAR7aKuLoQs16MkdgCYG5ji6z9bI9TdLFKYguAQ1uXyNpNdLFKYguAA61rZO0mulgFsQXAvqYS\nWbuJLpbJh5oCsKephtasTbiPrJ6ZLQB22LQAMctFb2a2AEiyFR2bFlqzNvm+05fYAkBoDDY9OOlD\nbAFsOHHxTNYJiyS2ADaYqNifdcOiiC2ADSUmDmYdsQhiC2ADiYjDs644Lh/9ACPkLej0JB7mV1We\nlxyZmS2ADSK0js6646jEFsCGEAvHZx1yFGILYAOIhMWxLpmX2AKYOHGweNYp8xBbAAAdiS2AiXLo\nmb6sWw5LbAHAEQkuDuPA2Kqq26rq0aq6b2bZ+6vqXFXdM5xeN/O9W6rqTFU9WFWvmVl+TVXdO3zv\ng+URCtCNTSyMx2Fmtj6a5Po9lv/31trVw+mPk6SqrkpyY5KXD9f5UFVdNFz+1iRvT3LlcNrrNgFg\nrQhbDnJgbLXWPp/kO4e8vRuS3NFae7y19o0kZ5JcV1WXJHlea+3utvURvB9P8oajDhqA/fnjv3zW\nORdynNdsvbuqvjzsZnz+sOxkkm/NXObssOzkcH738j1V1U1VdbqqTh9jfAAbxx99GJ+jxtatSa5I\ncnWS80k+sLARJWmtnWqtXdtau3aRtwsAvQhd9nOk2GqtPdJae7K19t0kH0ly3fCtc0kum7nopcOy\nc8P53csBWBB/7GGcjhRbw2uwtr0xyfY7Fe9KcmNVXVxVl2frhfBfaK2dT/JYVb1ieBfiW5J86hjj\nBoDREbzs5cRBF6iq25O8OskLq+pskl9J8uqqujpJS/Jwkl9Iktba/VV1Z5IHkjyR5F2ttSeHm3pn\ntt7Z+Owknx5OAACTVltvDhyvqjr0AMd+XwB6MaMyLv4ejdM8z5PW2sKeVD5BHgCgI7EFsObMao2P\n3wmzxBYAQEdiC2CNmUGB8RNbANCBEGab2AIA6EhsAQB0JLYA1pTdVOPnd0QitgAAuhJbAAAdiS2A\nNWT3FKwPsQUAHQljxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYA1ox3t8F6EVsAAB2JLQCAjsQW\nAEBHJ1Y9ANbbYV470lpbwkgAYJzEFnOb98W5uy8vvgDYJGKLQ1nku59mb0t4ATB1YosL6v0W8+3b\nF10ATJUXyLOnqlrqZ/n43CAApkps8QyrCp9lBx6sKzPBsF7EFk8ZS+yMYQwAsChii1ESXABMhdhi\nNDNau41xTAAwL7G14cYeNGMfHwAcRGwxeoILWGfe0IDY2mDrFDHrNFYAmCW2NtQ6xss6jhl6MVsC\n60NsbSDRAgDLI7ZYK0IRgHUjtjbMFGJlCvcBFsGuxPHzOyIRWwAAXYktAICOxNYGmdLutyndFzgO\nu6nGy++GbWILAKAjsbUhzAQBwGqILYA1Z3fV+PidMEtssbbM1gGwDsQWwASYSRkPvwt2E1sAAB2J\nLYCJMKOyen4H7EVsAQB0JLYAJsTMyupY9+xHbAEAdCS2ACbGDMvyWedciNgCgGMQWhxEbAFMkACA\n8RBbABMluPqzjjkMscXaspGDg3me9GPdclhiC2DiRMHiWafMQ2xtCBsGAFgNsQWwAfyHa3GsS+Yl\ntjbIlDYQU7ovsCyeN8dnHXIUB8ZWVd1WVY9W1X0zy36vqu4ZTg9X1T3D8pdU1d/PfO/DM9e5pqru\nraozVfXBqqo+dwmA/YiFo7PuOKoTh7jMR5P8dpKPby9orf3b7fNV9YEk/2/m8g+11q7e43ZuTfL2\nJH+e5I+TXJ/k0/MPGYDjaK3F/3fnI7Q4jgNntlprn0/ynb2+N8xOvSnJ7Re6jaq6JMnzWmt3t61H\n7MeTvGH+4XJcU9hgTOE+wKp5Hh2edcVxHfc1W69M8khr7Wszyy4fdiH+WVW9clh2MsnZmcucHZbt\nqapuqqrTVXX6mONjYmz0YHE8nw5mHbEIh9mNeCFvzs5ZrfNJXtxa+3ZVXZPkj6rq5fPeaGvtVJJT\nSVJVHukLZhcCsG07JmwTdhJZLNKRY6uqTiT5mSTXbC9rrT2e5PHh/Ber6qEkL01yLsmlM1e/dFjG\niqxjcNn4QT/ruE3oxbaGRTvObsSfSPLV1tpTuwer6geq6qLh/BVJrkzy9dba+SSPVdUrhtd5vSXJ\np47xswFYMJFhHdDHYT764fYk/yfJy6rqbFW9bfjWjXnmC+NfleTLw0dB/K8k72itbb+4/p1J/keS\nM0keincirty6bFRaa2szVlh3m/xc2+T7Tl819gfXPK/ZGvt9Gasx7zrwO4XVGfO2YZFsZzbHPI/p\n1trCngA+QR4bGmBPU59Vnvr9YzzEFknGF1w2gjAeU3wuTvE+MV7H/egHJmQsbwG3EYTxmX1ernob\ncVS2LayKmS2eYZUbJBtDGL91m3let/EyPWa22NOyZ7lsCGH9jGU2fD+2K4yF2OKCem9MbQxh/e1+\nHq8qvmxPGCuxxaEsOrpsFGG6lvn6LtsS1oHYYi5H+R+sjSFsrr2e/0cNMNsS1pXY4lhs/IB52W6w\nabwbEQCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6Ehs\nAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICO\nxBYAQEdiCwCgI7EFANCR2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANCR2AIA\n6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEdiCwCgI7EFANDRiVUPYJGqatVDAADYwcwWAEBHYgsA\noCOxBQDQkdgCAOhIbAEAdCS2AAA6ElsAAB0dGFtVdVlV/WlVPVBV91fVLw7LX1BVn6mqrw3/Pn/m\nOrdU1ZmqerCqXjOz/Jqqunf43gfLB2MBABN3mJmtJ5L8p9baVUlekeRdVXVVkvcm+Vxr7coknxu+\nzvC9G5O8PMn1ST5UVRcNt3VrkrcnuXI4Xb/A+wIAMDoHxlZr7Xxr7UvD+b9J8pUkJ5PckORjw8U+\nluQNw/kbktzRWnu8tfaNJGeSXFdVlyR5Xmvt7tZaS/LxmesAAEzSXIfrqaqXJPmhJH+e5EWttfPD\nt/46yYuG8yeT3D1ztbPDsn8czu9evtfPuSnJTcOXjye5b55xTtwLk/zfVQ9iRKyPnayPnayPnayP\nnayPp1kXO71skTd26Niqqu9N8gdJ3tNae2z25VattVZVbVGDaq2dSnJq+LmnW2vXLuq21531sZP1\nsZP1sZP1sZP1sZP18TTrYqeqOr3I2zvUuxGr6nuyFVqfaK394bD4kWHXYIZ/Hx2Wn0ty2czVLx2W\nnRvO714OADBZh3k3YiX5nSRfaa391sy37kry1uH8W5N8amb5jVV1cVVdnq0Xwn9h2OX4WFW9YrjN\nt8xcBwBgkg6zG/FHk/xsknur6p5h2S8n+dUkd1bV25J8M8mbkqS1dn9V3ZnkgWy9k/FdrbUnh+u9\nM8lHkzw7yaeH00FOHe6ubAzrYyfrYyfrYyfrYyfrYyfr42nWxU4LXR+19cZAAAB68AnyAAAdiS0A\ngI5GG1tVdf1wuJ8zVfXeVY9nGS5waKT3V9W5qrpnOL1u5jp7HhppKqrq4eEQT/dsvxX3KIeKmoKq\netnMY+Ceqnqsqt6zSY+Pqrqtqh6tqvtmlm3socP2WR+/UVVfraovV9Unq+r7huUvqaq/n3mcfHjm\nOlNeH3M/Pya+Pn5vZl08vP1a7Kk/Pi7w93U524/W2uhOSS5K8lCSK5I8K8lfJrlq1eNawv2+JMkP\nD+efm+SvklyV5P1J/vMel79qWDcXJ7l8WGcXrfp+LHidPJzkhbuW/XqS9w7n35vk1zZlfcysg4uy\n9WHC/3yiJ9fAAAADfklEQVSTHh9JXpXkh5Pcd5zHQ5IvZOvwY5WtN+q8dtX3bYHr46eSnBjO/9rM\n+njJ7OV23c6U18fcz48pr49d3/9Akv+yCY+P7P/3dSnbj7HObF2X5Exr7euttX9Icke2DgM0aW3/\nQyPtZ89DI/Uf6crNdaioFYxvGX48yUOttW9e4DKTWx+ttc8n+c6uxRt76LC91kdr7U9aa08MX96d\nnZ9v+AxTXx8XsJGPj23DbMybktx+oduYyvq4wN/XpWw/xhpbJ5N8a+brfQ/tM1W189BISfLuYbfA\nbTPTnJuwnlqSz1bVF2vrME7JhQ8VNfX1se3G7NxIburjI5n/8XAyhzx02AT8fHZ+xM7lwy6iP6uq\nVw7LNmF9zPP82IT1kSSvTPJIa+1rM8s24vGx6+/rUrYfY42tjVa7Do2U5NZs7VK9Osn5bE39boof\na61dneS1Sd5VVa+a/ebwP4uN+vySqnpWktcn+f1h0SY/PnbYxMfDfqrqfdn6rMNPDIvOJ3nx8Hz6\nj0l+t6qet6rxLZHnx97enJ3/YduIx8cef1+f0nP7MdbY2u+QP5NXexwaqbX2SGvtydbad5N8JE/v\nCpr8emqtnRv+fTTJJ7N13+c9VNTUvDbJl1prjySb/fgYOHTYLlX1c0l+Osm/G/6AZNgd8u3h/Bez\n9RqUl2bi6+MIz49Jr48kqaoTSX4mye9tL9uEx8def1+zpO3HWGPrL5JcWVWXD/+LvzFbhwGatGEf\n+jMOjbT9QBi8Mcn2O0v2PDTSssbbW1U9p6qeu30+Wy/8vS9zHipquaNeih3/I93Ux8cMhw6bUVXX\nJ/mlJK9vrf3dzPIfqKqLhvNXZGt9fH0D1sdcz4+pr4/BTyT5amvtqd1hU3987Pf3Ncvafiz7HQGH\nPSV5XbbeLfBQkvetejxLus8/lq0pzC8nuWc4vS7J/0xy77D8riSXzFznfcM6ejBr+A6RA9bHFdl6\nN8hfJrl/+3GQ5PuTfC7J15J8NskLNmF9DPfvOUm+neSfzizbmMdHtiLzfJJ/zNZrJd52lMdDkmuz\n9Uf3oSS/neFoGut22md9nMnWa022tyEfHi77b4bn0T1JvpTkX2/I+pj7+THl9TEs/2iSd+y67KQf\nH9n/7+tSth8O1wMA0NFYdyMCAEyC2AIA6EhsAQB0JLYAADoSWwAAHYktAICOxBYAQEf/H5gNjrJW\ntMK2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25cbb53bcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***********************************************************\n",
      "Epoche\n",
      "10\n",
      "Action_times\n",
      "23978\n",
      "Epsilon\n",
      "0.976544116397\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAJCCAYAAAD3HAIiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2sZVd93vHnVzugiIQGCrXM2KltyViyUeXElmspgKCB\nYFCCIZXooCqQBuFycWlIUyV2kVqrEiohgUg0yqFDYoErsHGaEKwWSAAloEgYM6DBb2A8BiNmNNgK\nkepEQQ42v/5x9/Hse+a87Le119v3I13dc/c9L2vvvfZaz1n7zdxdAAAACOMfxS4AAABAyQhbAAAA\nARG2AAAAAiJsAQAABETYAgAACIiwBQAAENDsYcvMrjGzB8zsuJndMPfnAwAAzMnmvM6WmZ0l6RuS\nXi7phKQvSXq9u98/WyEAAABmNPfI1lWSjrv7N939HyTdJunamcsAAAAwm7Nn/rxDkr7T+vuEpH+x\n+iQzu07Sdc2fV8xQLgAAgKe4u031XnOHrU7c/YikI5JkZtxPCAAAZGvu3YgnJZ3f+vu8ZhoAAECR\n5g5bX5J0sZldaGZPk3RY0h0zlwEAAGA2s+5GdPcnzOzfS/ozSWdJutnd75uzDAAAAHOa9dIPQ3DM\nFgAAmNuUB8hzBXkAAICACFsAAAABEbYAAAACImwBAAAERNgCAAAIKMkryA+V+pmVAAAgHrPJTjDs\nhZEtAACAgAhbAAAAARG2AAAAAirqmC0AAGJaLBZrp+/t7c1cEqSkqNv1pD4vAIDybApYmxC84ulz\ngPyUt+shbAEAMEDfkNVG4IqDsLUBYQsAkIoxAWvVtsDV5XMIbP0RtjYgbAEAUjBl0FpaDUxDPoPQ\n1V2ssMXZiAAA7BAiaK2+79DPCFU2TIeRLQAAtsglzDDCtRsjWwAAYLDFYpFNMKwNI1sAAGyQc3hh\npOtMjGwBAIDJ5BwUS0PYisTMdv4AADAGgSsN7Eac2NQhKYV5AoAalRRU2KW4j92IGYgxGsUIF7Zh\nhBRAFyUFxxxxI+oe3J3OC1ENqX/t1zBSCgDzI2xlwMzoJCs2ZcAneAH12jS6xS7G8Dhmq6eYI1up\nrytMa666Rr0CNqtt91vpwYtjtgA8Zc5Qz7FdAJZqC5dzYWRrAEa3EErs0EP9As5UawApcZSLkS3s\nREdYtthBa1mGFMoBIL5aQ2YIhC0gAQQcIF0ljvB0ReCaBmFrgBgjTIxqlSvFoMUIF4AlAtd4HLM1\n0JwdUerrCMPlEGiof8BpNQePEkb4OGYLa9HRlSuHoAUASzUHzbEIWwkjaJUrp6CVU1mB0EoY3RmD\nwDUMYQuYWY7hJccyA6Hs7e1VH7rQD2FroNCjToxqITUELuAgAhe6ImwliKBVLgILANSHsJUYghZS\nRlgEwHFb/Z0duwA4jaBVNoJKP7sadHbhAMgF19kaaaoONPX1gPFKClsh62vfb82ELsRW40hPrtsd\n19kCClZS0AplsVgM6rRq7OiAmHINWjERthLAqBYwDoELMRE+sAtha6SxQYmghRxNPVI3RVgicAFI\nFWErIoIWQEhCGRjdwjaErQm4+6Af1IHjteZDcENMBC5swqUfAEQTIhxxyQiEQJDHGIxsAajK0LMe\nUS/qy0Esj/4Y2QJQJUbAsAuhAlMhbAHAGsuOltB1ZuioYZkQtDAlwhYAbLFYLKoIF6u2hY32/2pc\nNrVjnfdH2AKAHWoKXH1HdEobAWRECyFwgDyAKHLr1HIr7xBj5rGE5VPCPCBNhC0As6NTSw9X8UcX\npYxgzo2wBWBWOXfIOZd9Lrkuo1zLjTwQtgCgclMHjdyCS27ljYVRreEIW0Bg3JrpNDq1euSyrnMp\nZ2wErXEIWwBQsZrDRs3zjnkRtgD0xmgdukg5zKRcNpSHsAVgFnRuAGpF2AJmwEgQkA6CP+Y2OGyZ\n2flm9hdmdr+Z3Wdmv9pMv8nMTprZsebnVa3X3Ghmx83sATN7xRQzAGBetQdHOmoAfY0Z2XpC0q+7\n+6WSrpZ0vZld2vzvd9398ubnE5LU/O+wpMskXSPp983srBGfD2Sl9pDC2Ux1Si2cplYe1GFw2HL3\nU+7+lebx30r6mqRDW15yraTb3P1xd/+WpOOSrhr6+QDmV3tgLNEcIZiAg9pNcsyWmV0g6ackfbGZ\n9DYzu9vMbjazZzXTDkn6TutlJ7QhnJnZdWZ21MyOTlE+IBWEFQxhZjt/AKRrdNgysx+T9MeS3u7u\nj0laSLpI0uWSTkl6T9/3dPcj7n6lu185tnwApjE2KDK60c3QIDUmgLGLFwhrVNgysx/RftD6sLv/\niSS5+yPu/qS7/1DSB3R6V+FJSee3Xn5eMw2oSo6jWzmWOaQQwTHECFVKo16EbdRszNmIJukPJX3N\n3d/bmn5u62mvlXRv8/gOSYfN7OlmdqGkiyXdNfTzgZwRXtAWOhClEriQJ0Y+xxszsvUzkn5J0r9c\nuczDu83sHjO7W9JLJf2aJLn7fZJul3S/pE9Jut7dnxxXfCBfuQSuXMqZozlHnnZ9Vi0dai3zibSc\nPfSF7v5XktZtuZ/Y8pp3Snrn0M8ESuPuSY86ELQ2WywWgzvumOt8+dmsW3RBOJ0GV5AHIku100u1\nXLlLJVzPXY5UOm2OHesulXVWAsIWkIDUgk1q5UnVYrHo1XmnErSWVstD54ol6sK0CFtAIlIIOO6e\nRDlKlFrQWpojcNFx54X1NT3CFpCQmEGHkDXcrtGtVIPWUurlA3JH2AISM/foEqNZYeUSZNrlnHJk\ng1GSvLC+whh8NiKAsJYBKFRnTcAKL5egtWRmT9WLZafLAeV1IGSFRdgCEjd16CJkYS4pduB7e3sE\nyJYU11GJLPWG18w6FzD1eQGm1iWApbJd1NDBtTuu3Ea12tbVmT7rL9UOvIY6uEuq62YufbZLd59s\nI2ZkC8hYKkEKB+UctKSDuxOX2p30utCSaidOwEp33dSEsAUA6CWHzpuQhZRwNiKA4Gro+HIIILWo\nob71wfKIj7AFIKjaGvrcdyEu5ToftdU35IHdiMjCpgaU0YS00fHlbd2xWymjviFVhC0kbVfjufw/\noQsxLetfrqNBAMIibCFJfb+hErrSwygD5kR924x2MT6O2UJyxjSaNLiYGx0ZgF0IW0jKFGGJwIW5\nELQAdMFuxETVeEA4IQk5Wd0WSz1eK4eD5Gk7Niu5z8gJYSshXRqMrscmbXuvGja+xWJRxXxiftQr\nAH1xb8RExPhmllKnEXL+U5rPEpU2qjC0vpQ6siWl37aWVgenRPt3EPdGrFishmL1c0vdKBnlmh6d\nGwB0xwHykaXUaS0Wi6d+SlPiPMXCsgSAfghbEaXcac1Ztrk+K+XlnYvSlyEjoHliva3HckkHYQsb\nld6xoh/qAwAMQ9iKJJeOK3Q5514OuSz31NSw3BgFABAKYQvR1NCBIw8ELZSGOp0WzkbETlPed5CA\nlZ/S19lUnZK7F3n5h1Qv+1B6vURZCFvobMglFGgQkTK+/eeF9qQb6nV6CFsR1NBg1DCPyBsdUj5o\nT/rh2oLp4ZitmeXeaOwqf6nX6apVyesyxLylusstZyXXQdSDsDWTkkLIpvkoZf4A7IsdHmlTUArC\nVmAlhaxtaphHlId6my7WDUpC2AqolsailvkEuog9GjSVUuYDSAFhK5DSA0jO89e+B2TO84FpUAfS\nwzpBaTgbcSAag30lLIcpryMGSPlfc4tRLWBahK0eSggW2IzTpQ+ivmNO1DeUjN2IHdEQ1IH1vI/l\nMF6uo0Mxyk19mxZfGtND2OqAhuBMJW/MrO/6sM7j4LhJ1IKwtQMNQZ1qXu81z/vUchvdmrO81DPU\nhLCF3koe1QKmlkvgyqWcQI44QH4Lvnmtx3IpV83rNuQJEqmfnTh30Kq5nqFOhC1gA85OxJRSDVxD\ngtbQsMT2hFoRtgBgJqkFrj5Ba4rRKEa0UCvC1gY0CigddTyOVAJX16BFPckLo4dpImytQeOCElGv\n07EMOjFCV5eQRV0BpkXYWkEjg9JQp9M1Z+giZJWPUa10EbaAgtF5dhezowoZuthdCMRH2GqhsQEQ\nUzsYjQ1ecx/8jrgY1UobYQsoFB1odyl2VOvC0roANvYaWdST/KVYf3EQYatBg4NSUJfLNfXFR6kr\nmy0DTMrLiJCVD27XA2yQY0OWcseQqhzX8xSoK92kWD/29vaSLBc2q35kiwYHpaAuoyvqynarQSbm\nKBehqgxVhy0aHGySSgNHHQ0rlfU8J+rUdtvqxOr/WJboit2IQIIWiwUNOZC4GsM6hqk2bNGRYZPY\nDSh1cx6x1zPSk1qdSK08GK7KsEVnhk1iN27UTYRE/VpvzAHnsdsM5KHqY7aApRQaTDpCYF4pbPeb\npFw29EfYQtVo0OrEeseUdSCHa3Ihrip3IwKpXaeGRhrI31RtSkptE6YxKmyZ2cNmdo+ZHTOzo820\nZ5vZp83sweb3s1rPv9HMjpvZA2b2irGFR9lCNTg0ZCDc1o02AHObYjfiS939r1t/3yDps+7+LjO7\nofn7N83sUkmHJV0m6XmSPmNmz3f3JycoAzLSp6FrP3eKDpJGFrUiYO4L3QaM2aVI+1QuG3OvLTN7\nWNKV7bBlZg9Ieom7nzKzcyX9pbtfYmY3SpK7//fmeX8m6SZ3/8KOz+hcwK7zQqMTz9SNSdd1mUoj\nRt1LSyr1Yg7UvfnXd59lXlNdjGndzdw3cffuT95h7MiWa3+E6klJ/9Pdj0g6x91PNf//rqRzmseH\nJN3Zeu2JZtoZzOw6SdeNLBsqsOtbZAoNGJ0cYqu9DsZqB3aNzKfQPmEeY8PWC939pJn9U0mfNrOv\nt//p7t5nZKr1uiOSjkj9RrZQrxQbrdo7uBwsFosk6w76S309pl4+hDXqAHl3P9n8flTSxyRdJemR\nZvehmt+PNk8/Ken81svPa6bNjkqP0AhawHxo05G6wWHLzJ5hZj++fCzp5yTdK+kOSW9snvZGSR9v\nHt8h6bCZPd3MLpR0saS7hn4+AAAELeRgzMjWOZL+ysy+qv3Q9H/d/VOS3iXp5Wb2oKSXNX/L3e+T\ndLuk+yV9StL1Mc9EZANFCNxAOj+sr7R0bZtTu1YesM2osxHnEOJsxDYa2nmV3DhSl/JVcr2U8qib\npa8DpCHW2YjVX0GeDXw+LGsAQI24N6K4r1WOUrrUA/UGGG+5HfGlDCWqfjfiJnSg0xvbiKZ4gUDq\nSRlq6OBzrKs1rBfMK9ZuRMLWBjk2TDkY0niOXRexrlqPPNTSoedab2tZP5gHYWsDwla5djWiodbB\n0MabOlGmmjrzXOtwTesIYRG2NiBslW9dQxp6+XdtvKkHZauxE8+1Tte4rjA9zkZEtWI0/rs+k+tl\noVS5hha2R+SMsIUktBvSuRrVdZ9DyKpHrqEDQH4IW0hGjKATI+QhPoJWnthGkSvCFqpHAw4ACImw\ntQHffOtC4KpL7eub9g2YF2FrCxokAAAwFmELQJUY3eLLJDAXwtYONEgAAGAMwlYHBC4ASEPtI5LI\nE2ELQLVq7bi5nhwwL8IWAFSkhJBVwjygLmfHLgAAILzSAsqm+eGwD6SIsAUAKEY7hBG8kAp2IwJA\n4Uob1eqq1vlGeghbAIBiEbiQAsIWABSMsMEyQHyELQBA8QhciImwBQAAEBBhqyPOagGAvDG6hVgI\nWwAAAAERtgBUixFrAHMgbPVAwwwAAPoibAGoEl+eAMyFsNUTDTSAnNBmAfERtgag8QLyVtM2zBl4\nQHyErYFqaqwBAMBwhK0R9vb2CF1AZthm68W6RyyELQAAgIAIWwCqUePIRo3zvA7LATGdHbsAAKbR\n7kw4KBoA0kHYAjK37hs7wesgRjXqxbpHCtiNCGSsS0dSe2dT+/xL9S6DWucb6WFkC8jMkA5kb2+P\nES5Ug5CF1Ji7xy7DVmbWuYCx5oVODHMZ24nUVlfpdA8qbf2zftGXmXV+rrt3f/IO7EYEAGRpsVgU\nFyBRJsLWBPh2BaSJjrgOhC6kjrAFAJUo/YshgQupImxNpPRGDGmgM+mPZQYgNsLWhAhcmMOY8EAd\nRel1gHCNFBG2JlZ6Q4Y00KH0w/I6qPR2ivWN1BC2JsZGjrkMrWuld7TohnoAzIewBVSoxo6WL0Jn\n2tvbq7IuAHMjbAEZGxogag0eXCKgHqxnpISwBaA6dMQA5kTYAlAlAheAuRC2gMxtCg3LXWaru84I\nGaexLMrG+kUqzo5dAADT2da50PFgk729PeoHEBAjW0Ah6CyHYbkBCI2wBRSAwICxuAQEEA5hCwBQ\nLL6IIAWELQAAgIAIWwAASexKBEIhbAEAnlJa4CptfpCnwWHLzC4xs2Otn8fM7O1mdpOZnWxNf1Xr\nNTea2XEze8DMXjHNLKSFDRsAALQNvs6Wuz8g6XJJMrOzJJ2U9DFJ/1bS77r777Sfb2aXSjos6TJJ\nz5P0GTN7vrs/ObQMAAAAqZtqN+LPSnrI3b+95TnXSrrN3R93929JOi7pqok+PymMbiEk6hdCK6WO\nlTIfyN9UYeuwpFtbf7/NzO42s5vN7FnNtEOSvtN6zolm2hnM7DozO2pmRycq3+zYyIF8cHkAACGN\nDltm9jRJr5b0R82khaSLtL+L8ZSk9/R9T3c/4u5XuvuVY8sXE4ELU6NOhUPgKgvbClIyxcjWKyV9\nxd0fkSR3f8Tdn3T3H0r6gE7vKjwp6fzW685rpgFAEghcp+UcVnIuO8o0xY2oX6/WLkQzO9fdTzV/\nvlbSvc3jOyR9xMzeq/0D5C+WdNcEnw9UgQ5kHusCV63LPscbVNe6rpC2UWHLzJ4h6eWS/l1r8rvN\n7HJJLunh5f/c/T4zu13S/ZKekHQ9ZyICyEE7cNTWmecYuIDUmLvHLsNWZta5gKnOCw0Vxlrt4KlT\ncdUWuKQ86lyN6wX9mFnn57p79yfvwBXkZ0ADgCnl0OmVrsZ1sLe3R1sGDDTFMVsAAqKDS9MycNW2\nflIdZa1tPSAvjGzNhIYAU0ilY8Npta+T5YgXbRywGWELAEaqPXDFRtBD6ghbQMLoRPJB4OK4LmAT\nwhaQKDqt/BC49s0Vugh3yAUHyM+I69UAqEnIg+kJWcgJI1szImihKzqSfLGdbzZFvWY0CzkibM2E\nBhhdbOtIqEMowZigRMhCrghbQAJ2fVsnaKEkQ0ITQQs5I2wBwMQIx7t13R3IbkOUgAPkgcTRcaNk\nBCnUgJGtGdBZAgcxWgGgJoQtIDJCBwCUjbAFJKzEUVHCJYDaELZmQOeCTWqqG7XtOiwxKAMYhgPk\nAQSzK1xxVwUANWBkC4ik9FGe0ucPALoibM2EjgdtXetDzvWGESsA2EfYAmZU23FLXZS8PAicACTC\n1qxK7lSwXa0hq2vYqHHZAKgHYWtmdCr1GbvOc68zBC4AtSNsRUCnAqzHtgGgRIStSGrdrYRhcq8r\nfY5dyn1eAWAV19mKbEjHwkG3dSrtmlTr5qXEoLVYLIqcLwDdEbYyVFqni25KWefb5qOUeQSANnP3\n2GXYysw6FzD1eQmhS+fU/lZNZxbHFCMbrLu8MboFxGdmnZ/r7t2fvAMjW5mjAa8DQSt/Q9Yh2zdQ\nBg6QrwyNN5APQjZQBka2gMAIuBhjV+CifgHpY2QLADK2WCwYAQMSR9iqEN+EgfIQuIB0EbaAgDgL\nEXOirgBpImxVitEtoEwELiA9HCAPBEKgRSw5XLV+UyhMvdzAEIStinEl+nDoMIAzdWlvls9hG0JJ\n2I1YORq06bFMgYOGnDHJWZYoCWELhIMJsSyRilKCSinzgboRtiCJkDCFUMuQdYOcTRGWCFzIHTei\nxgE0asOEDkSsF4TQp952rYMhjwXliwfGinUjasIWzkDH3s8cHQDrBKFsq78p1jsCF8YgbG1A2Ion\nxYY2NXM1/KwL4DQCF4YibG1A2EoDnf2Z5m7wWQfAaQQuDBErbHGAPDrZ29ujcWthWQAAumJkC73N\nOcKyDDUpjOqkELBSWA5AKlLYJpGXWCNbXEEevYW+8vy6BnRTozpX+KBRBwAMxcgWBps66IwJNGPK\nkluQYnQLOC237RdxccwWsjNVIzfF8WBDX09DDQAIjd2IGKXPMVWhgw3BCQCQInYjAplhNyJwEF+0\n0BW7EQEAAApE2AKAxHGdOyBvHLNVuHW7nGi08xb60hsIb3UbZDsdjuWEHBC2CrWtM27/j4YKmF7f\n7YrtECgbB8gXZOhoBw19nhjdSk/IbYn1vR7tF/rgRtQbELZ2m6oRptHKDx1wGkJvO6znzWi30Adn\nIwLojY4mLg5cB9AFx2wFsuubaNeLge5qyKf8xrtYLOg4MsQB83GwrQDoit2IEwvV6a1r2Oe+GTTS\nRuCax9zbBut1M9op9JXsbkQzu9nMHjWze1vTnm1mnzazB5vfz2r970YzO25mD5jZK1rTrzCze5r/\nvc/6zHEmQjaKq+8dugFeLBZP/SAPdDzhsYzTQvuEXHQ5ZuuDkq5ZmXaDpM+6+8WSPtv8LTO7VNJh\nSZc1r/l9Mzurec1C0pslXdz8rL5ntuYKJbEaFhq0fCyPISIUTI9lCmConcdsufvnzeyClcnXSnpJ\n8/hDkv5S0m82029z98clfcvMjku6yswelvRMd79TkszsFkmvkfTJ0XMQSczgE6PRX84vHU4+ulw4\nc8z7TfW+OaDeAxhj6NmI57j7qebxdyWd0zw+JOk7reedaKYdah6vTl/LzK4zs6NmdnRg+YKqoXNB\neYaOeO16HSNpmxV4tERyaI+Rg9FnI7q79zmIveN7HpF0ROp3gPwcUtiwY5Zh9bPpZPMTap213zeF\n7WQqfZYX4QrAOkPD1iNmdq67nzKzcyU92kw/Ken81vPOa6adbB6vTs9KSR3IVOa69Q8hLy9dL22S\nui71bFfAMrMkzpQGEM/QsHWHpDdKelfz++Ot6R8xs/dKep72D4S/y92fNLPHzOxqSV+U9AZJ/2NU\nyZGcEMd1beqsub8jNpkq6G2rV4xgAeijy6UfbpX0BUmXmNkJM3uT9kPWy83sQUkva/6Wu98n6XZJ\n90v6lKTr3f3J5q3eKukPJB2X9JAyOzg+92/oc5piWfU5w5N1g3XGhPB1rzWzp37mxJeJ7Vg+yAEX\nNe2AznyYIY1gyNEIxDHn9jP2jMnV108ZrIa2T7Q/27HNo49kL2oKDNW3k5hqRAxpSaEz7HNGZawR\nLPSXQt0CumBkawc673G6NoZTL2ca4fSE3pbGrPM5gtWQ9on2Zzu2c/TFyBaKtKuzCHX1fTqp9IS8\nHlff922PXjGClSeCFnJC2NqCDjusOe7viPRM3Un2vQ5WrHDV93Opv0A52I24BY1dOfgWnJcu294U\n18CaW582ivZnM7ZnDBVrN+LoK8gDOYh1T0kMk/rxV4iDbRi5ImwByF5pAYtRrYMIWcgdx2xtQGNX\nHtZpWXI8wL1LWamnQHkY2UJVQtxSCPPIKVQNRdA6E9sqSsDI1ho0eOVjHecjt9GrXUqaFwDdELZQ\nLQJXmmq9Bhb1ESgXuxEBRFdTqEJ37EJEKRjZQtUYTYij1tGrTXKsh6GDEEELJSFsAZgV4Sr/ZUDQ\nAvohbAGYVep3rUB3Ie53SdBCiQhbqF6Ou3By5+6EroJMFboIWigVYQtANDUHrvauxJxCxrayDg1d\nIUbIgJRwNiKAqNw9+2OYcBDBCTiIsNXC7iQgDgJXHghRwDCW+jC+mXUu4Jh5IWjViw4kHTkHrtX2\np+u8tF+XajvENoJS9Glj3H2yBomRLaXbwAG1KWmEa9OXv9zmj6AFjFd92CJoAWlZhpScQkmfUfVU\n9iYQooD5cDYiqkaHg5RQH4EyVR22GNUC0pXLtbhyKCOAuKoOW6gbowh5IMwAyB1hC1UiaOUl1cAV\nolzUTaA81V76gV2IdaIjy1tqB82HbD9DtlFsB6hVrEs/MLKFKnA7kDKk9OUwdFmor0A5CFsoHp1W\nWVIKXKFRd4EyVBu2aMTqwHouUy5nKk5h6jrMNgHMr9qwBSB/sQLX3J9LQALyRtgCkDVGuOZ9DwD9\nEbYAZG/OwBUz3I0JSwQtIJ5qL/2wxCUgyratg9m17umc8jPHpSFSaTO7tl3UY+C0WJd+IGwRtoq1\nqZPps87pqPITMnCl2F5uqs/UXeBMhK0NQoetJUIXtqHjyk+I0JV6ewlgOy5qGhmdKbYhjOdn6mBE\n0AIwFGGrhcAFlIWABCAF7EbcgJEMrEMgz9PYXYqpt5MAumE3YmLoVLEOITxPhCUAMRG2AFSBwAUg\nFsIWgGoMCVyENABjEbaAntiVmLeabmINIA2ELQBV6hK4CGUApnB27AKkhlELoB7uPsstfgDUjbDV\nyDVkrZ41met8ALFsClyMagGYCtfZUp4BhZAVH5cHKctq4Eq9bQTQH/dG3IAbUR9EyEoLgassy4Y4\n9XYRwDCErQ1Chq2cgkq7U8+p3DUIEbg4jmiz1NssAOmKFbY4ZiuibaNU6zpwQlaaFosFI1wAgI0I\nWwnZ1mETtNJG4AIAbFJt2EohvKRQBgAAEBYXNQUmQngGAKxD2AIAAAiIsAUAABAQYQsAACAgwhYA\nAEBAVYYtDmQGAABzqS5sEbQAAMCcdoYtM7vZzB41s3tb037bzL5uZneb2cfM7Cea6ReY2ffN7Fjz\n8/7Wa64ws3vM7LiZvc8i3I+EoAUAAObWZWTrg5KuWZn2aUkvcPd/Lukbkm5s/e8hd7+8+XlLa/pC\n0pslXdz8rL5nUAQtAAAQw86w5e6fl/Q3K9P+3N2faP68U9J5297DzM6V9Ex3v9P37yJ7i6TXDCty\nfwQtzIHb9QAA1pnimK1fkfTJ1t8XNrsQP2dmL2qmHZJ0ovWcE820tczsOjM7amZHxxaOoAUAAGIa\ndW9EM3uHpCckfbiZdErST7r798zsCkl/amaX9X1fdz8i6UjzGT6mjMAcGNUCAGwyOGyZ2S9L+nlJ\nP9vsGpS7Py7p8ebxl83sIUnPl3RSB3c1ntdMC4pRLcyBoAUA2GbQbkQzu0bSb0h6tbv/fWv6c83s\nrObxRdo/EP6b7n5K0mNmdnVzFuIbJH18dOmByAhaAIBddo5smdmtkl4i6TlmdkLSf9X+2YdPl/Tp\n5goOdzaW0SkMAAAUIElEQVRnHr5Y0n8zsx9I+qGkt7j78uD6t2r/zMYf1f4xXu3jvICsELIAAF1Z\nswcwWX2O2VqdF3YjYipzh6sIl6HLRuptFoB09Wlb3X2yhri6K8gDfTGKBQAYg7AFbEHQAgCMRdgC\nNiBoAQCmQNgCAAAIqOiwxcgEhqLuAACmMuoK8kBpCFkAgKkVPbIl0XmiO+oKACAERrZQPUIWACCk\n4ke2JDpTAAAQTxVhS9oPXIQuAAAwt2rC1tLcgYuAlzbWDwAgtOrCljRfB0tHDgAAqgxbUvgg1H5/\nQleaWC8AgDlUG7akcJ3tuvelYwcAoE7VX/phGYIWi8Vk74X0sa4AAHMxd49dhq3MrHMBU58XaZpQ\nh3FyCFpmFrsIycphOweQpj5tq7tP1hBXvRsxhhw6+pKx/AEAcyNszYyRrXgIWgCAGKo/ZmsuhKx4\nCFkAgJgY2QIAAAiIsDUDRrXiYVQLABAbYSswglY8BC0AQAoIWygSQQsAkAoOkA+IUa35EbIAAKkh\nbCFbBCsAQA7YjQgAABAQYSsQdiECAACJsBUEQQsAACwRtgAAAAIibE2MUS0AANBG2AIAAAiIsAUA\nABAQYQsAACAgwhYAAEBAhC0AAICACFvIFmd+Ankxs0l+gNxwb0QAQBChgtHq+7p7kM8BpsLIFrLG\n6BaQlhgjUIx6IXWErYnt7e3FLgIAzCa1XXyplQeQCFvVKDkEMroFzC+XMJNLOVE2jtkKYG9vL0oA\nKDlQAUhDrsFlWW6O70IMhK1A5gxchCwAoeUaslYRuhADYSugkIGrb8BiVxuAIUoJWasIXZgTx2wF\ntre3N/nIEyNZAOZQatBqq2EeER8jWzMhIAHIRW0BhFEuhMbIViUIewB2qf3MvZrnHWERtgAABI1G\n7YETYRC2AKByhIszsUwwJcJWRUrdlVjqfAFzIFRsxrLBVAhbyB6XtQCGIUzsxjLCFAhblSl1FIjA\nBfRDiOiOZYWxCFsoRkmBy9352fCD8QgP/bHMMAZhC0UpKXABIRAahmPZYSjCFopD4ALWIyyMxzLE\nEIQtAKgAIWE6LEv0xe16UKTFYlHsyQDIS3ukdd3N6eeop4SD6ZkZxxCiM8IWAExs067sddOX0/hy\nAJSLsAUAExlzvGCI0MWIVliMbqErjtmqEN+ggelNdWLGYrHgJI+MEGjRxc6wZWY3m9mjZnZva9pN\nZnbSzI41P69q/e9GMztuZg+Y2Sta068ws3ua/73PqKEAChEiHI19T5pYIB22awjUzF4s6e8k3eLu\nL2im3STp79z9d1aee6mkWyVdJel5kj4j6fnu/qSZ3SXpP0j6oqRPSHqfu39yZwHNOo/RMpzbT8hv\nz+3Rs1jf0hnBwxzmqN9D6jJha170P3nos124+2Qb0c5jttz982Z2Qcf3u1bSbe7+uKRvmdlxSVeZ\n2cOSnunud0qSmd0i6TWSdoYthLPuzKi+rwdqNtcXib5n1xK05sfxW9hmzDFbbzOzu5vdjM9qph2S\n9J3Wc0400w41j1enr2Vm15nZUTM7OqJ86GBoYOrzOkIZMF7XYEfQAtIzNGwtJF0k6XJJpyS9Z7IS\nSXL3I+5+pbtfOeX7Yr29vb3OgajPc1dfBwAlI+hik0GXfnD3R5aPzewDkv5P8+dJSee3nnpeM+1k\n83h1OhISMhBxdhUw3q7diXT2QJoGjWyZ2bmtP18raXmm4h2SDpvZ083sQkkXS7rL3U9JeszMrm7O\nQnyDpI+PKDcyQtBCiajXWIfAi3W6XPrhVklfkHSJmZ0wszdJendzGYe7Jb1U0q9JkrvfJ+l2SfdL\n+pSk6939yeat3irpDyQdl/SQODi+CjE7JDpDlIh6DeSny9mIr18z+Q+3PP+dkt65ZvpRSS/oVToA\nQCeMqKSDMxOxiivII5gUvoGnUAaUiZM+AHRF2EIQhBxgPoxqpYd1gjbCFgAAQECELQDIGCMoQPoI\nWwAwUIzjtjhWLB8EYSwRtgBgBMIPgF0IWwAw0lyBi2AH5ImwBQATiBGE2E2VPtYRJMIWCsdIAOYU\nsr5Rl4F8EbYAIHEELSBvhC0Uiw4KMUxZ7/b29ja+H7ungHzsvDcikCOCFmJa1r+hd1Kg/paFeyXC\nUq8AZta5gKnPS21i3bKHjgop6bMd9Km7jGzlhf4pDX22G3efbCNjNyKKQtBCarbtClx9HoAyMbKF\noOYa3aKjQm0Y2coL/VMaGNlCkQhBAIDaEbYAAAACYjciZhNqlyKjZ6gNuxDzQ/+UBnYjoniEIgBA\njQhbyBoBDgCQOnYjIoopdikStFArdiPmh/4pDbF2IxK2MEqXittlvfQNXwQt1IywlR/6pzQQtjYg\nbKVnbEO/aT11CVyELICwlSP6pzQQtjYgbKUhVOPOOgP6I2zlh7YuDbHCFjeixlahG/Xl+9MQAQBK\nxdmIWMvMZv32zDd1AECpCFs4Q6zgM3fAA3LFSDCQF8IWnpJK2EmhDAAATIWwhSQRuAAApeAA+Qnt\nunRB+7IFm54b49IGqQYbM2N3CQAge1z6YQI532A51aDVlnodBWLIYdvFabRjaeBG1JkKFbRCv3dO\n6FQA5IygBcLWCHOEoZCfkVOIyamsAAC0sRtxgBgjTlPvUsw1vKReX4E55bod14Z2Kx3crmeDlMJW\n7N16UwWunBvo1OsrMKect+Wa0G6lg2O2Ehc7aKVShtjoXAAAuSFsdZBSyBlblhLCSgnzAEyBEZP0\nsY4gEbZ2SiloAQCA/BC2AAAAAiJsbZHqqNbQcpW0+62keQHGYDdVulg3WCJsbZBq0AIAAHkhbFWC\nkSAAAOIgbAFA5thdlR7WCdoIW8gWo3UAgBwQtgCgAIykpIN1gVWErTU4OB4AAEyFsLWCoAUgV4yo\nxMc6wDqErRaCFgAAmBphq0HQAlACRlbiYdljE8IWAABAQIQtACgMIyzzY5ljG8KW8tuFuLe3F7sI\nAIAGQQu7ELYAoEAEACAdhK3MMKoFoCsCV3gsY3RB2MoIQesgGjlgN7aTcFi26IqwlQmCFoChCAXT\nY5miD8JWBqYIWjQMAADEYal3wmbWuYBj5iW1MxJDjGSZ2eTvGVPqdRdITWltQCy0Pfnqsw24+2Qb\nDCNbCQq1y7CkBqKkeQHmwnYzHssQQ+wMW2Z2s5k9amb3tqZ91MyONT8Pm9mxZvoFZvb91v/e33rN\nFWZ2j5kdN7P3WUJfsVIa1eLYLAAhERaGY9lhqLM7POeDkn5P0i3LCe7+r5ePzew9kv5f6/kPufvl\na95nIenNkr4o6ROSrpH0yf5FnlZKQQsA5uDu7FLsiaCFMXaObLn75yX9zbr/NaNTr5N067b3MLNz\nJT3T3e/0/Rp7i6TX9C/utGoMWiU0GCXMAxAb21F3LCuMNfaYrRdJesTdH2xNu7DZhfg5M3tRM+2Q\npBOt55xopq1lZteZ2VEzOzqyfBvVGLRKQKMHTIftaTeWEabQZTfiNq/XwVGtU5J+0t2/Z2ZXSPpT\nM7us75u6+xFJR6R+ZyN2VXvQYhcCgKVlmKBNOIiQhSkNDltmdrakX5R0xXKauz8u6fHm8ZfN7CFJ\nz5d0UtJ5rZef10ybXcpBa86D43MMXDR+QDg5tgmh0NZgamN2I75M0tfd/andg2b2XDM7q3l8kaSL\nJX3T3U9JeszMrm6O83qDpI+P+OxBUg5aABAbIYNlgDC6XPrhVklfkHSJmZ0wszc1/zqsMw+Mf7Gk\nu5tLQfxvSW9x9+XB9W+V9AeSjkt6SAmciZiSGJd8yKVRcfdsygrkruZtreZ5R1jVXEE+5VGt2NfW\nSnnXQer1EyhZym3DlGhn6sEV5BENDQ2AdUofVS59/pCOsWcjYoTYI1ptqR0cSwMIpCO19mEKtDGY\nEyNbEaW2azOVb3kplAHAQcv2Iefts4R5QJ4IW5GlFrikuGGHRhBIX26BJbfyojyErQSkGrjmbJxo\nDIH8pL7dpl4+1INjtrBV6KtL0xAC+VvdjmMd30V7glQxspWIFEe32qb+hsg3TqBccx4bxXFYyAFh\nKyGpBy7pYMPWtXFbfQ2NIlCPKbd/2hLkit2IGIXGDkBftBuoDSNbAAAAAVUTtlK6gOg2OexKBAAA\n3VUTtggxAAAghirCFkELAADEUnzYImgBAICYig5bOQatXI4tAwAA3RQbtnIMWgAAoDzFhi0AAIAU\nELYSwi5EAADKU2TYynEXIkELAIAyFRm2AAAAUkHYSgCjWgAAlIsbUUdEyAIAoHyMbEVC0AIAoA6E\nrQgIWgAA1IOwNTOCFgAAdSFszYigBQBAfczdY5dhKzPrXMD2vKR0rS1CFgAA8ZlZ5+e6e/cn78DI\nVmAELQAA6lZs2CLkAACAFBQbtiQCFwAAiK/osCXFDVyEPQAAUHzYkgg9AAAgnirCljR/4CLgAQAA\nqaKwJc0XgAhaAABgqaqwJYUPQgQtAADQVl3YksIFIoIWAABYVWXYkqYPRgQtAACwTrVhS5ouIBG0\nAADAJlWHLWl8UCJoAQCAbaoPW9LwwETQAgAAu5i7xy7DVmbWuYBTzMtisdj5HEIWAAD5MbPOz3X3\n7k/e9bmELQAAUINYYYvdiAAAAAERtgAAAAIibAEAAARE2AIAAAiIsAUAABAQYQsAACAgwhYAAEBA\nhC0AAICACFsAAAABnR27AFPqc2VYAACAOTCyBQAAEBBhCwAAICDCFgAAQECELQAAgIAIWwAAAAER\ntgAAAAIibAEAAAS0M2yZ2flm9hdmdr+Z3Wdmv9pMf7aZfdrMHmx+P6v1mhvN7LiZPWBmr2hNv8LM\n7mn+9z7jwlgAAKBwXUa2npD06+5+qaSrJV1vZpdKukHSZ939Ykmfbf5W87/Dki6TdI2k3zezs5r3\nWkh6s6SLm59rJpwXAACA5OwMW+5+yt2/0jz+W0lfk3RI0rWSPtQ87UOSXtM8vlbSbe7+uLt/S9Jx\nSVeZ2bmSnunud7q7S7ql9RoAAIAi9bpdj5ldIOmnJH1R0jnufqr513clndM8PiTpztbLTjTTftA8\nXp2+7nOuk3Rd8+fjku7tU87CPUfSX8cuREJYHgexPA5ieRzE8jiI5XEay+KgS6Z8s85hy8x+TNIf\nS3q7uz/WPtzK3d3MfKpCufsRSUeazz3q7ldO9d65Y3kcxPI4iOVxEMvjIJbHQSyP01gWB5nZ0Snf\nr9PZiGb2I9oPWh929z9pJj/S7BpU8/vRZvpJSee3Xn5eM+1k83h1OgAAQLG6nI1okv5Q0tfc/b2t\nf90h6Y3N4zdK+nhr+mEze7qZXaj9A+HvanY5PmZmVzfv+YbWawAAAIrUZTfiz0j6JUn3mNmxZtp/\nlvQuSbeb2ZskfVvS6yTJ3e8zs9sl3a/9Mxmvd/cnm9e9VdIHJf2opE82P7sc6TYr1WB5HMTyOIjl\ncRDL4yCWx0Esj9NYFgdNujxs/8RAAAAAhMAV5AEAAAIibAEAAASUbNgys2ua2/0cN7MbYpdnDltu\njXSTmZ00s2PNz6tar1l7a6RSmNnDzS2eji1PxR1yq6gSmNklrTpwzMweM7O311Q/zOxmM3vUzO5t\nTav21mEblsdvm9nXzexuM/uYmf1EM/0CM/t+q568v/WakpdH7+2j8OXx0dayeHh5LHbp9WNL/zpP\n++Huyf1IOkvSQ5IukvQ0SV+VdGnscs0w3+dK+unm8Y9L+oakSyXdJOk/rXn+pc2yebqkC5tldlbs\n+Zh4mTws6Tkr094t6Ybm8Q2SfquW5dFaBmdp/2LC/6ym+iHpxZJ+WtK9Y+qDpLu0f/sx0/6JOq+M\nPW8TLo+fk3R28/i3WsvjgvbzVt6n5OXRe/soeXms/P89kv5LDfVDm/vXWdqPVEe2rpJ03N2/6e7/\nIOk27d8GqGi++dZIm6y9NVL4kkbX61ZREco3h5+V9JC7f3vLc4pbHu7+eUl/szK52luHrVse7v7n\n7v5E8+edOnh9wzOUvjy2qLJ+LDWjMa+TdOu29yhleWzpX2dpP1INW4ckfaf198Zb+5TKDt4aSZLe\n1uwWuLk1zFnDcnJJnzGzL9v+bZyk7beKKn15LB3WwUay1voh9a8Ph9Tx1mEF+BUdvMTOhc0uos+Z\n2YuaaTUsjz7bRw3LQ5JeJOkRd3+wNa2K+rHSv87SfqQatqpmK7dGkrTQ/i7VyyWd0v7Qby1e6O6X\nS3qlpOvN7MXtfzbfLKq6fomZPU3SqyX9UTOp5vpxQI31YRMze4f2r3X44WbSKUk/2WxP/1HSR8zs\nmbHKNyO2j/Ver4Nf2KqoH2v616eEbD9SDVubbvlTPFtzayR3f8Tdn3T3H0r6gE7vCip+Obn7yeb3\no5I+pv1573urqNK8UtJX3P0Rqe760eDWYSvM7Jcl/bykf9N0IGp2h3yvefxl7R+D8nwVvjwGbB9F\nLw9JMrOzJf2ipI8up9VQP9b1r5qp/Ug1bH1J0sVmdmHzLf6w9m8DVLRmH/oZt0ZaVoTGayUtzyxZ\ne2ukucobmpk9w8x+fPlY+wf+3quet4qat9SzOPCNtNb60cKtw1rM7BpJvyHp1e7+963pzzWzs5rH\nF2l/eXyzguXRa/sofXk0Xibp6+7+1O6w0uvHpv5Vc7Ufc58R0PVH0qu0f7bAQ5LeEbs8M83zC7U/\nhHm3pGPNz6sk/S9J9zTT75B0bus172iW0QPK8AyRHcvjIu2fDfJVSfct64GkfyLps5IelPQZSc+u\nYXk08/cMSd+T9I9b06qpH9oPmack/UD7x0q8aUh9kHSl9jvdhyT9npq7aeT2s2F5HNf+sSbLNuT9\nzXP/VbMdHZP0FUm/UMny6L19lLw8mukflPSWlecWXT+0uX+dpf3gdj0AAAABpbobEQAAoAiELQAA\ngIAIWwAAAAERtgAAAAIibAEAAARE2AIAAAiIsAUAABDQ/we0s3W93ySRxQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25cbb767828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***********************************************************\n",
      "Epoche\n",
      "20\n",
      "Action_times\n",
      "40823\n",
      "Epsilon\n",
      "0.960399044393\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25cbbb121d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***********************************************************\n",
      "Epoche\n",
      "30\n",
      "Action_times\n",
      "104279\n",
      "Epsilon\n",
      "0.90196415173\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25cbabf3ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-45-8f35317ea258>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     57\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mQ_Table\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     58\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 59\u001b[1;33m \u001b[0mQ_Table_Final\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mRun1\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     60\u001b[0m \u001b[0mQ_Table_Final\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mQ_Table_Final\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mActions\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mStates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     61\u001b[0m \u001b[0mQ_Table_Final\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-45-8f35317ea258>\u001b[0m in \u001b[0;36mRun1\u001b[1;34m()\u001b[0m\n\u001b[0;32m     14\u001b[0m         \u001b[0mCurrent_Left_Obs_Lev\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mDirection_min_level\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLeft_D\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_a\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     15\u001b[0m         \u001b[0mCurrent_Right_Obs_Lev\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mDirection_min_level\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mRight_D\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_a\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 16\u001b[1;33m         \u001b[0mCurrent_Up_Obs_Lev\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mDirection_min_level\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mUp_D\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_a\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     17\u001b[0m         \u001b[0mCurrent_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mOutput_state_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCurrent_Left_Obs_Lev\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_Right_Obs_Lev\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_Up_Obs_Lev\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-39-1dc94eb146c5>\u001b[0m in \u001b[0;36mDirection_min_level\u001b[1;34m(Degree, Current_x, Current_y, Rotbot_angle)\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[0mDegree\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mDegree\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mRotbot_angle\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mDegree\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m         \u001b[0mLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mScan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mCurrent_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mmin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLevel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[1;31m# Left_min=Direction_min_level(Left_D,1133,1408)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-36-46521d4ecc50>\u001b[0m in \u001b[0;36mScan\u001b[1;34m(Current_x, Current_y, Angle)\u001b[0m\n\u001b[0;32m      9\u001b[0m     \u001b[0mObs_dis_x\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mObs_dis\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mAngle\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m180\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m     \u001b[0mObs_dis_y\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mCurrent_y\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mObs_dis\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mAngle\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m180\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m     \u001b[1;32mwhile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetpixel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mObs_dis_x\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mObs_dis_y\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m!=\u001b[0m\u001b[1;36m0\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mObs_dis\u001b[0m\u001b[1;33m<\u001b[0m\u001b[1;36m250\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;31m#getpixiel obtains the degree of Gray Scale\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     12\u001b[0m         \u001b[0mObs_dis\u001b[0m\u001b[1;33m+=\u001b[0m\u001b[1;36m5\u001b[0m  \u001b[1;31m#Search interval, can be changed\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     13\u001b[0m         \u001b[0mObs_dis_x\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mCurrent_x\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mObs_dis\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mAngle\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m180\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Miniconda\\Miniconda1\\lib\\site-packages\\PIL\\Image.py\u001b[0m in \u001b[0;36mgetpixel\u001b[1;34m(self, xy)\u001b[0m\n\u001b[0;32m   1312\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1313\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1314\u001b[1;33m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpyaccess\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1315\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpyaccess\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetpixel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mxy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1316\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetpixel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mxy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "def Run1():\n",
    "    global Epoche\n",
    "    global Action_times\n",
    "    global Epoche_action_interval\n",
    "    Crash=False\n",
    "    Current_x,Current_y,Current_a=Random_start()\n",
    "    Epoche_false=0\n",
    "    Vec_x=[]\n",
    "    Vec_y=[]\n",
    "    Vec_x.append(Current_x)\n",
    "    Vec_y.append(Current_y)\n",
    "    Epoche_action_times=0\n",
    "    while Epoche_false<100:\n",
    "        Current_Left_Obs_Lev=Direction_min_level(Left_D,Current_x,Current_y,Current_a)\n",
    "        Current_Right_Obs_Lev=Direction_min_level(Right_D,Current_x,Current_y,Current_a)\n",
    "        Current_Up_Obs_Lev=Direction_min_level(Up_D,Current_x,Current_y,Current_a)\n",
    "        Current_state=Output_state_index(Current_Left_Obs_Lev,Current_Right_Obs_Lev,Current_Up_Obs_Lev)\n",
    "        \n",
    "        Action_next=Choose_action(Q_Table,Current_state,Action_times)\n",
    "        Next_x,Next_y,R,Next_a,Crash=Next_state_F(Current_x,Current_y,Action_next,Current_a)\n",
    "        \n",
    "        if Crash==True:\n",
    "            Q_target=R\n",
    "            if(Epoche%10==0):\n",
    "                print('***********************************************************')\n",
    "                print('Epoche')\n",
    "                print(Epoche)\n",
    "                print(\"Action_times\")\n",
    "                print(Action_times)\n",
    "                print(\"Epsilon\")\n",
    "                print(Epsilon_final+(Epsilon_start-Epsilon_final)*np.exp(-1*Decay_Rate*Action_times))\n",
    "                Plot_Move(Vec_x,Vec_y)\n",
    "                Vec_x=[]\n",
    "                Vec_y=[]\n",
    "            Epoche+=1\n",
    "            Epoche_false+=1\n",
    "            Next_x,Next_y,Next_a=Random_start()\n",
    "            Epoche_action_interval.append(Epoche_action_times)\n",
    "            Epoche_action_times=0\n",
    "        \n",
    "        else:\n",
    "            Next_Left_Obs_Lev=Direction_min_level(Left_D,Next_x,Next_y,Next_a)\n",
    "            Next_Right_Obs_Lev=Direction_min_level(Right_D,Next_x,Next_y,Next_a)\n",
    "            Next_Up_Obs_Lev=Direction_min_level(Up_D,Next_x,Next_y,Next_a)\n",
    "            Next_state=Output_state_index(Next_Left_Obs_Lev,Next_Right_Obs_Lev,Next_Up_Obs_Lev)\n",
    "            Q_target=R+Beta*max(Q_Table[Next_state])\n",
    "            \n",
    "        Q_Table[Current_state][Action_next]+=Alpha*(Q_target-Q_Table[Current_state][Action_next])\n",
    "        Current_x=Next_x\n",
    "        Current_y=Next_y\n",
    "        Current_a=Next_a\n",
    "        Vec_x.append(Current_x)\n",
    "        Vec_y.append(Current_y)\n",
    "        Action_times+=1\n",
    "        Epoche_action_times+=1\n",
    "    plt.plot(np.arange(len(Epoche_action_interval)),Epoche_action_interval)\n",
    "    return Q_Table\n",
    "print()\n",
    "Q_Table_Final=Run1()\n",
    "Q_Table_Final=pd.DataFrame(Q_Table_Final,columns=Actions,index=States)\n",
    "Q_Table_Final\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def test(Q_Table_):\n",
    "    Crash=False\n",
    "    Current_x,Current_y,Current_a=Random_start()\n",
    "    Test_time=0\n",
    "    Vec_x=[]\n",
    "    Vec_y=[]\n",
    "    print(Vec_x)\n",
    "    while Test_time<10000:\n",
    "        Current_Left_Obs_Lev=Direction_min_level(Left_D,Current_x,Current_y,Current_a)\n",
    "        Current_Right_Obs_Lev=Direction_min_level(Right_D,Current_x,Current_y,Current_a)\n",
    "        Current_Up_Obs_Lev=Direction_min_level(Up_D,Current_x,Current_y,Current_a)\n",
    "        Current_state=Output_state_index(Current_Left_Obs_Lev,Current_Right_Obs_Lev,Current_Up_Obs_Lev)\n",
    "        Action_next=np.argmax(Q_Table_[Current_state])\n",
    "#         print('Current_state')\n",
    "#         print(Current_state)\n",
    "#         print('Action_next')\n",
    "#         print(Action_next)\n",
    "        Next_x,Next_y,R,Next_a,Crash=Next_state_F(Current_x,Current_y,Action_next,Current_a)\n",
    "#         print(Current_a%360)\n",
    "        \n",
    "        Vec_x.append(Current_x)\n",
    "        Vec_y.append(Current_y)\n",
    "        if Crash==True:\n",
    "            print('Boom')\n",
    "            print(Test_time)\n",
    "            break\n",
    "        else:\n",
    "            if(Test_time%1000==0):\n",
    "                Plot_Move(Vec_x,Vec_y)\n",
    "                Vec_x=[]\n",
    "                Vec_y=[]\n",
    "                Next_x,Next_y,Current_a=Random_start()\n",
    "                print(\"******************\")\n",
    "                print()\n",
    "#                 print(im.getpixel((Mext_x,Next_y)))\n",
    "                print(Test_time)\n",
    "                print(\"******************\")\n",
    "        Current_x=Next_x\n",
    "        Current_y=Next_y\n",
    "        Current_a=Next_a\n",
    "        Test_time+=1\n",
    "test(Q_Table_Final.as_matrix())\n",
    "np.savetxt(\"Q_Table.txt\",Q_Table_Final.as_matrix())\n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Q_Table_Final.iloc[30,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.array([1,1,1])+2"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
